> Yes, some filesystems then still get the inode lock in write mode, but > now it's the filesystem itself that wraps its own iterator, rather > than cause pain for the callers. And, btrfs already does this in some cases where it first upgrades from shared to non-shared and then downgrades again before returning in btrfs_real_readdir(). So it's not like this isn't already happening. > > So no more "Do you have an ->iterate() _or_ ->iterate_shared() > function?" and associated "I need to do locking differently" > nastiness. Only odd filesystems that never got the memo on "don't use > .iterate". Ack. It's not pretty but that hasn't stopped us before and it's less ugly than double inode methods which pass exactly the same parameters. I think removing the double methods is good and I see no problem in shaming filesystems that didn't manage to convert properly in the last 7 years. And let's please not get stuck on incoming pinky promises that everyone will have converted before the next 7 years are over. I'd prefer to see the iop wiped and leave the ugliness to the individual filesystems rn.