On 02/03/2016 03:12 PM, Vladimir Davydov wrote:
>> ub = get_exec_ub(); >> @@ -246,15 +252,18 @@ SYSCALL_DEFINE0(sync) >> fsb = __ve_fsync_behavior(ve); >> if (fsb == FSYNC_NEVER) >> goto skip; >> + >> + if (fsb == FSYNC_FILTERED) >> + sync_ub = get_io_ub(); >> } >> >> - wakeup_flusher_threads(0, WB_REASON_SYNC); >> - iterate_supers(sync_inodes_one_sb, NULL); >> - iterate_supers(sync_fs_one_sb, &nowait); >> - iterate_supers(sync_fs_one_sb, &wait); >> + wakeup_flusher_threads_ub(0, ub, WB_REASON_SYNC); > > s/ub,/sync_ub, > > ? > Yup, >> + iterate_supers(sync_inodes_one_sb, sync_ub); >> + sync_filesystems(sync_ub, nowait); >> + sync_filesystems(sync_ub, wait); >> iterate_bdevs(fdatawrite_one_bdev, NULL); >> iterate_bdevs(fdatawait_one_bdev, NULL); > > If sync_ub != NULL, you sync inodes and bdevs twice, here and in > sync_filesystems_ve. Better move all the iterate_supers/bdevs from here > to sync_filesystems under !ub branch? > I'm thinking about something like this: @@ -255,15 +253,22 @@ SYSCALL_DEFINE0(sync) if (fsb == FSYNC_FILTERED) sync_ub = get_io_ub(); + + if (sync_ub && (sync_ub != get_ub0())) { + wakeup_flusher_threads_ub(0, sync_ub, WB_REASON_SYNC); + sync_filesystems_ve(get_exec_env(), ub, nowait); + sync_filesystems_ve(get_exec_env(), ub, wait); + goto skip; + } } !sync_ub path left untouched. _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel