Re: [PATCH 37/40] pnfs-submit wave3 send zero stateid seqid on v4.1 i/o

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

 



On Mon, Feb 7, 2011 at 12:42 PM, Benny Halevy <bhalevy@xxxxxxxxxxx> wrote:
> On 2011-02-04 23:33, andros@xxxxxxxxxx wrote:
>> From: Andy Adamson <andros@xxxxxxxxxx>
>>
>> Data servers require a zero stateid seqid, and there is no advantage to not
>> doing the same for all NFSv4.1
>>
>> Signed-off-by: Andy Adamson <andros@xxxxxxxxxx>
>> ---
>>  fs/nfs/nfs4xdr.c |   10 +++++++---
>>  1 files changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
>> index 4e2c168..2380c45 100644
>> --- a/fs/nfs/nfs4xdr.c
>> +++ b/fs/nfs/nfs4xdr.c
>> @@ -1384,7 +1384,7 @@ static void encode_putrootfh(struct xdr_stream *xdr, struct compound_hdr *hdr)
>>       hdr->replen += decode_putrootfh_maxsz;
>>  }
>>
>> -static void encode_stateid(struct xdr_stream *xdr, const struct nfs_open_context *ctx, const struct nfs_lock_context *l_ctx)
>> +static void encode_stateid(struct xdr_stream *xdr, const struct nfs_open_context *ctx, const struct nfs_lock_context *l_ctx, int zero_seqid)
>
> nit: how about bool rather than int zero_stateid?

At first I thought OK, change to bool. But then I looked at how it is
set. The zero_seqid parameter is simply the compound_hdr->minorversion
passed into encode_stateid which I think is cleaner than changing
zero_seqid to a bool and then testing if compound_hdr->minorversion
then set 'true' when encode_stateid is called.  So I think this is OK
as is.

-->Andy
>
> Benny
>
>>  {
>>       nfs4_stateid stateid;
>>       __be32 *p;
>> @@ -1392,6 +1392,8 @@ static void encode_stateid(struct xdr_stream *xdr, const struct nfs_open_context
>>       p = reserve_space(xdr, NFS4_STATEID_SIZE);
>>       if (ctx->state != NULL) {
>>               nfs4_copy_stateid(&stateid, ctx->state, l_ctx->lockowner, l_ctx->pid);
>> +             if (zero_seqid)
>> +                     stateid.stateid.seqid = 0;
>>               xdr_encode_opaque_fixed(p, stateid.data, NFS4_STATEID_SIZE);
>>       } else
>>               xdr_encode_opaque_fixed(p, zero_stateid.data, NFS4_STATEID_SIZE);
>> @@ -1404,7 +1406,8 @@ static void encode_read(struct xdr_stream *xdr, const struct nfs_readargs *args,
>>       p = reserve_space(xdr, 4);
>>       *p = cpu_to_be32(OP_READ);
>>
>> -     encode_stateid(xdr, args->context, args->lock_context);
>> +     encode_stateid(xdr, args->context, args->lock_context,
>> +                    hdr->minorversion);
>>
>>       p = reserve_space(xdr, 12);
>>       p = xdr_encode_hyper(p, args->offset);
>> @@ -1592,7 +1595,8 @@ static void encode_write(struct xdr_stream *xdr, const struct nfs_writeargs *arg
>>       p = reserve_space(xdr, 4);
>>       *p = cpu_to_be32(OP_WRITE);
>>
>> -     encode_stateid(xdr, args->context, args->lock_context);
>> +     encode_stateid(xdr, args->context, args->lock_context,
>> +                    hdr->minorversion);
>>
>>       p = reserve_space(xdr, 16);
>>       p = xdr_encode_hyper(p, args->offset);
> --
> 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