diff options
Diffstat (limited to 'xlators/features/utime/src/utime-gen-fops-c.py')
| -rwxr-xr-x[-rw-r--r--] | xlators/features/utime/src/utime-gen-fops-c.py | 59 |
1 files changed, 44 insertions, 15 deletions
diff --git a/xlators/features/utime/src/utime-gen-fops-c.py b/xlators/features/utime/src/utime-gen-fops-c.py index 0e40485e6bc..9fb3e1b8b1a 100644..100755 --- a/xlators/features/utime/src/utime-gen-fops-c.py +++ b/xlators/features/utime/src/utime-gen-fops-c.py @@ -1,5 +1,6 @@ -#!/usr/bin/python +#!/usr/bin/python3 +from __future__ import print_function import os import sys @@ -15,7 +16,7 @@ gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this, { gl_timespec_get(&frame->root->ctime); - (void) utime_update_attribute_flags(frame, GF_FOP_@UPNAME@); + (void) utime_update_attribute_flags(frame, this, GF_FOP_@UPNAME@); STACK_WIND (frame, gf_utime_@NAME@_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->@NAME@, @SHORT_ARGS@); return 0; @@ -40,7 +41,7 @@ gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this, { gl_timespec_get(&frame->root->ctime); - (void) utime_update_attribute_flags(frame, GF_FOP_READ); + (void) utime_update_attribute_flags(frame, this, GF_FOP_READ); STACK_WIND (frame, gf_utime_@NAME@_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->@NAME@, @SHORT_ARGS@); return 0; @@ -54,7 +55,21 @@ gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this, { gl_timespec_get(&frame->root->ctime); - (void) utime_update_attribute_flags(frame, GF_FOP_WRITE); + (void) utime_update_attribute_flags(frame, this, GF_FOP_WRITE); + STACK_WIND (frame, gf_utime_@NAME@_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->@NAME@, @SHORT_ARGS@); + return 0; +} +""" + +FOPS_COPY_FILE_RANGE_TEMPLATE = """ +int32_t +gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this, + @LONG_ARGS@) +{ + gl_timespec_get(&frame->root->ctime); + + (void) utime_update_attribute_flags(frame, this, GF_FOP_COPY_FILE_RANGE); STACK_WIND (frame, gf_utime_@NAME@_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->@NAME@, @SHORT_ARGS@); return 0; @@ -80,6 +95,16 @@ gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this, frame->root->flags |= MDATA_CTIME; } + if (valid & (GF_SET_ATTR_ATIME | GF_SET_ATTR_MTIME)) { + if (valid & GF_ATTR_ATIME_NOW) { + frame->root->ctime.tv_sec = stbuf->ia_atime; + frame->root->ctime.tv_nsec = stbuf->ia_atime_nsec; + } else if (valid & GF_ATTR_MTIME_NOW) { + frame->root->ctime.tv_sec = stbuf->ia_mtime; + frame->root->ctime.tv_nsec = stbuf->ia_mtime_nsec; + } + } + STACK_WIND (frame, gf_utime_@NAME@_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->@NAME@, @SHORT_ARGS@); return 0; @@ -93,26 +118,30 @@ utime_ops = ['fallocate', 'zerofill', 'opendir', 'mknod', 'mkdir', utime_read_op = ['readv'] utime_write_op = ['writev'] utime_setattr_ops = ['setattr', 'fsetattr'] +utime_copy_file_range_ops = ['copy_file_range'] def gen_defaults(): for name in ops: if name in utime_ops: - print generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs) - print generate(FOPS_COMMON_TEMPLATE, name, fop_subs) + print(generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs)) + print(generate(FOPS_COMMON_TEMPLATE, name, fop_subs)) if name in utime_read_op: - print generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs) - print generate(FOPS_READ_TEMPLATE, name, fop_subs) + print(generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs)) + print(generate(FOPS_READ_TEMPLATE, name, fop_subs)) if name in utime_write_op: - print generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs) - print generate(FOPS_WRITE_TEMPLATE, name, fop_subs) + print(generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs)) + print(generate(FOPS_WRITE_TEMPLATE, name, fop_subs)) if name in utime_setattr_ops: - print generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs) - print generate(FOPS_SETATTR_TEMPLATE, name, fop_subs) + print(generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs)) + print(generate(FOPS_SETATTR_TEMPLATE, name, fop_subs)) + if name in utime_copy_file_range_ops: + print(generate(FOPS_CBK_COMMON_TEMPLATE, name, cbk_subs)) + print(generate(FOPS_COPY_FILE_RANGE_TEMPLATE, name, fop_subs)) for l in open(sys.argv[1], 'r').readlines(): if l.find('#pragma generate') != -1: - print "/* BEGIN GENERATED CODE - DO NOT MODIFY */" + print("/* BEGIN GENERATED CODE - DO NOT MODIFY */") gen_defaults() - print "/* END GENERATED CODE */" + print("/* END GENERATED CODE */") else: - print l[:-1] + print(l[:-1]) |
