Re: [PATCH 1/1] Prevent 3.0 from crashing if it receives a partial layout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 21, 2011 at 5:51 AM, Boaz Harrosh <bharrosh@xxxxxxxxxxx> wrote:
> On 09/20/2011 09:52 PM, Fred Isaman wrote:
>> This is a backport of critical parts of
>> commit 7c24d9489f "NFSv4.1: File layout only supports whole file layouts"
>>
>> It prevents the file layout driver from (incorrectly) using
>> partial layouts, but ignores the part of the referenced commmit that
>> relies on additional machinery to change the LAYOUTGET request
>> based on layout driver.
>>
>> Signed-off-by: Fred Isaman <iisaman@xxxxxxxxxx>
>
> Hi Fred
>
> Do you know of any plans/timetables to support segments in the files-layout-driver?
> Both objects and blocks do support it.
> Is there some missing generic infrastructure needed or its only LD stuff?
>

I plan on having something to test at BAT.

Fred

> Just that I know of a few files-based servers that can only serve segments
> and are unusable with current Linux-pNFS-client which is a great pity.
>
> I wish it could be ready for next BAT
>
> Thanks
> Boaz
>
>> ---
>>  fs/nfs/nfs4filelayout.c |    8 ++++++++
>>  fs/nfs/pnfs.c           |    3 ++-
>>  2 files changed, 10 insertions(+), 1 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
>> index 614c4d2..75af812 100644
>> --- a/fs/nfs/nfs4filelayout.c
>> +++ b/fs/nfs/nfs4filelayout.c
>> @@ -428,6 +428,14 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo,
>>
>>       dprintk("--> %s\n", __func__);
>>
>> +     /* FIXME: remove this check when layout segment support is added */
>> +     if (lgr->range.offset != 0 ||
>> +         lgr->range.length != NFS4_MAX_UINT64) {
>> +             dprintk("%s Only whole file layouts supported. Use MDS i/o\n",
>> +                     __func__);
>> +             goto out;
>> +     }
>> +
>>       if (fl->pattern_offset > lgr->range.offset) {
>>               dprintk("%s pattern_offset %lld too large\n",
>>                               __func__, fl->pattern_offset);
>> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
>> index a726c0a..36d2a29 100644
>> --- a/fs/nfs/pnfs.c
>> +++ b/fs/nfs/pnfs.c
>> @@ -980,7 +980,8 @@ pnfs_update_layout(struct inode *ino,
>>               arg.offset -= pg_offset;
>>               arg.length += pg_offset;
>>       }
>> -     arg.length = PAGE_CACHE_ALIGN(arg.length);
>> +     if (arg.length != NFS4_MAX_UINT64)
>> +             arg.length = PAGE_CACHE_ALIGN(arg.length);
>>
>>       lseg = send_layoutget(lo, ctx, &arg, gfp_flags);
>>       if (!lseg && first) {
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux