Date: Mon, 24 Sep 2012 16:50:55 GMT From: Zheng Liu <lz@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 217672 for review Message-ID: <201209241650.q8OGotQr011737@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@217672?ac=10 Change 217672 by lz@gnehzuil-desktop on 2012/09/24 16:50:54 Fix a bug in ext2_append_entry because of incorrect the length of entry. Check whether we need to do an async IO or not. Affected files ... .. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_htree.c#6 edit Differences ... ==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_htree.c#6 (text+ko) ==== @@ -28,11 +28,17 @@ #include <sys/param.h> #include <sys/systm.h> -#include <sys/conf.h> +#include <sys/namei.h> +#include <sys/bio.h> +#include <sys/buf.h> +#include <sys/endian.h> +#include <sys/mount.h> #include <sys/vnode.h> -#include <sys/stat.h> -#include <sys/buf.h> -#include <sys/namei.h> +#include <sys/malloc.h> +#include <sys/dirent.h> +#include <sys/sysctl.h> + +#include <ufs/ufs/dir.h> #include <fs/ext2fs/inode.h> #include <fs/ext2fs/ext2_mount.h> @@ -448,7 +454,7 @@ last_entry->e2d_reclen = entry_len; last_entry = (struct ext2fs_direct_2 *)((char *)last_entry + entry_len); new_entry->e2d_reclen = block + blksize - (char *)last_entry; - memcpy(last_entry, new_entry, entry_len); + memcpy(last_entry, new_entry, EXT2_DIR_REC_LEN(new_entry->e2d_namlen)); } /* @@ -641,7 +647,12 @@ /* * Write directory block 0. */ - error = bwrite(bp); + if (DOINGASYNC(vp)) { + bdwrite(bp); + error = 0; + } else { + error = bwrite(bp); + } dp->i_flag |= IN_CHANGE | IN_UPDATE; if (error) goto out;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209241650.q8OGotQr011737>