diff options
Diffstat (limited to 'xlators/features/shard/src/shard.c')
| -rw-r--r-- | xlators/features/shard/src/shard.c | 27 | 
1 files changed, 22 insertions, 5 deletions
diff --git a/xlators/features/shard/src/shard.c b/xlators/features/shard/src/shard.c index c7cced664ee..c7a57e08645 100644 --- a/xlators/features/shard/src/shard.c +++ b/xlators/features/shard/src/shard.c @@ -502,6 +502,10 @@ shard_common_inode_write_failure_unwind (glusterfs_fop_t fop,                  SHARD_STACK_UNWIND (zerofill, frame, op_ret, op_errno,                                      NULL, NULL, NULL);                  break; +        case GF_FOP_DISCARD: +                SHARD_STACK_UNWIND (discard, frame, op_ret, op_errno, +                                    NULL, NULL, NULL); +                break;          default:                  gf_msg (THIS->name, GF_LOG_WARNING, 0, SHARD_MSG_INVALID_FOP,                          "Invalid fop id = %d", fop); @@ -531,6 +535,10 @@ shard_common_inode_write_success_unwind (glusterfs_fop_t fop,                  SHARD_STACK_UNWIND (zerofill, frame, op_ret, 0, &local->prebuf,                                      &local->postbuf, local->xattr_rsp);                  break; +        case GF_FOP_DISCARD: +                SHARD_STACK_UNWIND (discard, frame, op_ret, 0, &local->prebuf, +                                    &local->postbuf, local->xattr_rsp); +                break;          default:                  gf_msg (THIS->name, GF_LOG_WARNING, 0, SHARD_MSG_INVALID_FOP,                          "Invalid fop id = %d", fop); @@ -3556,6 +3564,12 @@ shard_common_inode_write_wind (call_frame_t *frame, xlator_t *this,                                     FIRST_CHILD(this)->fops->zerofill, fd,                                     shard_offset, size, local->xattr_req);                  break; +        case GF_FOP_DISCARD: +                STACK_WIND_COOKIE (frame, shard_common_inode_write_do_cbk, fd, +                                   FIRST_CHILD(this), +                                   FIRST_CHILD(this)->fops->discard, fd, +                                   shard_offset, size, local->xattr_req); +                break;          default:                  gf_msg (this->name, GF_LOG_WARNING, 0, SHARD_MSG_INVALID_FOP,                          "Invalid fop id = %d", local->fop); @@ -4502,6 +4516,11 @@ shard_common_inode_write_begin (call_frame_t *frame, xlator_t *this,                                           FIRST_CHILD(this)->fops->zerofill,                                           fd, offset, len, xdata);                          break; +                case GF_FOP_DISCARD: +                        STACK_WIND_TAIL (frame, FIRST_CHILD(this), +                                         FIRST_CHILD(this)->fops->discard, +                                         fd, offset, len, xdata); +                        break;                  default:                  gf_msg (this->name, GF_LOG_WARNING, 0, SHARD_MSG_INVALID_FOP,                          "Invalid fop id = %d", fop); @@ -4614,12 +4633,10 @@ shard_zerofill (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,  int  shard_discard (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, -              size_t len, dict_t *xdata) +               size_t len, dict_t *xdata)  { -        /* TBD */ -        gf_msg (this->name, GF_LOG_INFO, ENOTSUP, SHARD_MSG_FOP_NOT_SUPPORTED, -                "discard called on %s.", uuid_utoa (fd->inode->gfid)); -        SHARD_STACK_UNWIND (discard, frame, -1, ENOTSUP, NULL, NULL, NULL); +        shard_common_inode_write_begin (frame, this, GF_FOP_DISCARD, fd, NULL, +                                        0, offset, 0, len, NULL, xdata);          return 0;  }  | 
