Hi Xinwei, > > +static void prevent_burst_bios(struct ioband_group *gp, struct bio *bio) > > +{ > > + struct ioband_device *dp = gp->c_banddev; > > + > > + if (current->flags & PF_KTHREAD) { > > + /* > > + * Kernel threads shouldn't be blocked easily since each of > > + * them may handle BIOs for several groups on several > > + * partitions. > > + */ > Might be a stupid question, but doesn't that make more sense to just > check if current->mm == NULL ? > I think PF_BORROWED_MM is only used when kernel threads doing AIO > for user process, and that should be counted as normal user processes. > Am I miss anything ? This function makes processes issuing I/O blocked when the number of in-flight I/Os exceeds a certain threshold. The purpose is to prevent I/O requests from issuing unlimitedly, not for counting the number of I/Os. But kernel threads should not be blocked easily since each of them may handles BIOs for several group on several partitions. The AIO kernel threads also handle I/Os for several groups, that's why they should not be blocked easily. Thanks, Ryo Tsuruta -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel