On Feb 8, 2019, at 3:36 AM, Carlos Maiolino wrote: > > On Fri, Feb 08, 2019 at 09:46:12AM +0100, Christoph Hellwig wrote: >> On Thu, Feb 07, 2019 at 02:25:01PM -0700, Andreas Dilger wrote: >>> Do we really need to be this way, about reserving a single flag for Lustre, >>> which will likely also be useful for other filesystems? It's not like >>> Lustre is some closed-source binary module for which we need to make life >>> difficult, it is used by many thousands of the largest computers at labs >>> and universities and companies around the world. We are working to clean >>> up the code outside the staging tree and resubmit it. Not reserving a flag >>> just means we will continue to use random values in Lustre before it can >>> be merged, which will make life harder when we try to merge again. >> >> No, it is available in source, but otherwise just as bad. And we generally >> only define APIs for in-kernel usage. >> >> If we can come up with a good API for in-kernel filesystems we can do >> that, otherwise hell no. And staging for that matter qualifies as out >> of tree. >> >> That being said I'm really worried about these FIEMAP extensions as >> userspace has no business poking into details of the placement (vs >> just the layout). > > I tend to say that identifying on which device an extent is is better than > simply saying 'it maps to physical blocks X-Z, but it's your problem to identify > which device X-Z belongs to'. > >> But all that belongs into a separate dicussion instead of dragging down >> this series where it does not belong at all. > > Agreed, but now I'm on a kind of dead-end :P > > Darrick's concerns are valid, regarding letting currently unsupported > filesystems to suddenly allow FIBMAP calls, I don't think there is a huge danger of people suddenly moving to use LILO on f2fs or Btrfs with new kernels. In most cases, it _would_ just work, but the FIBMAP->FIEMAP layer needs to check for FIEMAP_FLAG_NOT_ALIGNED, FIEMAP_FLAG_ENCODED, and FIEMAP_FLAG_DEVICE flags that would make this unsuitable for booting. > but on the other hand, his proposed > solution, which is also valid, requires a new discussion/patchset to discuss an > improvement of the FIEMAP infra-structure, and 'fix' the problem mentioned. > Using a flag to identify FIBMAP calls has been rejected. So, I'd accept > suggestions on how to move this patch forward, without requiring the > improvements suggested by Darrick, and, without using a flag to tag FIBMAP > calls, as suggested by me, I'm kind of running out of ideas by now :( I think Darrick was against a flag like "FIEMAP_FLAG_FIBMAP" because it could be specified from userspace, and it is a bit ugly and has no other value than preventing FIBMAP from working on filesystems that don't support it today. As Christoph mentioned, such a flag could be OK as long as it is masked from userspace in the top-level ioctl_fiemap() handler (though to be honest, there is no benefit for a userspace app to set this flag, it would just increase the chance the ioctl(FIEMAP) call will fail). #define FIEMAP_FLAG_FIBMAP 0x80000000 Filesystems that don't want FIBMAP to work at all should return -ENOTTY from their ->fiemap() handler. That said, there is *still* a need for fe_device checking in ioctl_fibmap(), because for filesystems that allow both FIEMAP and FIBMAP (i.e. the most common ones like ext4 and XFS) there may still be reasons for FIBMAP to fail for some files if they are unsuitable (e.g. data stored on multiple devices). That isn't something that the filesystems should be checking themselves. Cheers, Andreas