Bill Irwin <[EMAIL PROTECTED]> writes:

> On Thu, Mar 01, 2007 at 03:46:08PM -0800, Adam Litke wrote:
>>  static inline int is_file_hugepages(struct file *file)
>>  {
>> -    return file->f_op == &hugetlbfs_file_operations;
>> +    if (file->f_op == &hugetlbfs_file_operations)
>> +            return 1;
>> +    if (is_file_shm_hugepages(file))
>> +            return 1;
>> +
>> +    return 0;
>>  }
> ...
>> +int is_file_shm_hugepages(struct file *file)
>> +{
>> +    int ret = 0;
>> +
>> +    if (file->f_op == &shm_file_operations) {
>> +            struct shm_file_data *sfd;
>> +            sfd = shm_file_data(file);
>> +            ret = is_file_hugepages(sfd->file);
>> +    }
>> +    return ret;
>
> A comment to prepare others for the impending doubletake might be nice.
> Or maybe just open-coding the equality check for &huetlbfs_file_operations
> in is_file_shm_hugepages() if others find it as jarring as I. Please
> extend my ack to any follow-up fiddling with that.

You did notice we are testing a different struct file?

> The patch addresses relatively straightforward issues and naturally at
> that.

The whole concept is recursive so I'm not certain being a recursive check
is that bad but I understand the point.

I think the right answer is most likely to add an extra file method or
two so we can remove the need for is_file_hugepages.

There are still 4 calls to is_file_hugepages in ipc/shm.c and
2 calls in mm/mmap.c not counting the one in is_file_shm_hugepages.

The special cases make it difficult to properly wrap hugetlbfs files
with another file, which is why we have the weird special case above.

Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to