Messages in this thread | | | Date | Fri, 22 Apr 2011 16:33:11 -0700 | From | Sunil Mushran <> | Subject | Re: [PATCH 1/2] fs: add SEEK_HOLE and SEEK_DATA flags |
| |
On 04/22/2011 11:06 AM, Andreas Dilger wrote: > Sure, there are lots of wasted syscalls, but in this case the cost of doing extra SEEK_DATA and SEEK_HOLE operations may be fairly costly. This involves scanning the whole disk layout, possibly over a network, which might need tens or hundreds of disk seeks to read the metadata, unlike regular SEEK_SET. > > Even SEEK_END is somewhat costly on a network filesystem, since the syscall needs to lock the file size in order to determine the end of the file, which can block other threads from writing to the file. > > So while I agree that the Linux mantra that "syscalls are cheap" is true if those syscalls don't actually do any work, I think it also ignores the cost of what some syscalls need to do behind the scenes.
You have a point. I was just reviewing the possible patch for ocfs2 and it looks heavy.
One option is to scrap SEEK_* and make another syscall llfind() with FIND_*. Or, do both.
| |