[Ocfs2-devel] [PATCH] ocfs2: drop the unwanted null byte in dentry lock name
Andrew Morton
akpm at linux-foundation.org
Wed Nov 27 15:38:41 PST 2013
On Wed, 27 Nov 2013 17:05:00 +0800 Joseph Qi <joseph.qi at huawei.com> wrote:
> Dentry lock name is made up of the type 'N', the parent blkno and its
> blkno represented as a binary value.
> Now there is a null byte between parent blkno and the binary blkno
> value, so drop it.
Geeze.
What are the runtime effects of this change?
> --- a/fs/ocfs2/dlm/dlmdebug.c
> +++ b/fs/ocfs2/dlm/dlmdebug.c
> @@ -257,7 +257,7 @@ static int stringify_lockname(const char *lockname, int locklen, char *buf,
> #define OCFS2_DENTRY_LOCK_INO_START 18
> if (*lockname == 'N') {
> memcpy((__be64 *)&inode_blkno_be,
> - (char *)&lockname[OCFS2_DENTRY_LOCK_INO_START],
> + (char *)&lockname[OCFS2_DENTRY_LOCK_INO_START - 1],
And what's up with all the CrazyCasting? &inode_blkno_be is *already*
__be64* and the second arg to memcpy is `const void *', so the cast
there is also unneeded.
> sizeof(__be64));
> out += snprintf(buf + out, len - out, "%.*s%08x",
> OCFS2_DENTRY_LOCK_INO_START - 1, lockname,
> diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
> index 3a44a64..62f2387 100644
> --- a/fs/ocfs2/dlmglue.c
> +++ b/fs/ocfs2/dlmglue.c
> @@ -586,7 +586,7 @@ static __u64 ocfs2_get_dentry_lock_ino(struct ocfs2_lock_res *lockres)
> {
> __be64 inode_blkno_be;
>
> - memcpy(&inode_blkno_be, &lockres->l_name[OCFS2_DENTRY_LOCK_INO_START],
> + memcpy(&inode_blkno_be, &lockres->l_name[OCFS2_DENTRY_LOCK_INO_START - 1],
Like that.
> sizeof(__be64));
>
> return be64_to_cpu(inode_blkno_be);
> @@ -631,7 +631,7 @@ void ocfs2_dentry_lock_res_init(struct ocfs2_dentry_lock *dl,
>
> BUG_ON(len != (OCFS2_DENTRY_LOCK_INO_START - 1));
>
> - memcpy(&lockres->l_name[OCFS2_DENTRY_LOCK_INO_START], &inode_blkno_be,
> + memcpy(&lockres->l_name[OCFS2_DENTRY_LOCK_INO_START - 1], &inode_blkno_be,
> sizeof(__be64));
>
> ocfs2_lock_res_init_common(OCFS2_SB(inode->i_sb), lockres,
> --
> 1.8.4.3
More information about the Ocfs2-devel
mailing list