Select the types of activity you want to include in your feed.
Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
* 'for-linus' of git://oss.sgi.com/xfs/xfs: xfs: fix ->write_inode return values xfs: fix xfs_mark_inode_dirty during umount xfs: deprecate the nodelaylog mount option
···592592 interface that was used by acer-wmi driver. It will replaced by593593 information log when acer-wmi initial.594594Who: Lee, Chun-Yi <jlee@novell.com>595595+596596+----------------------------597597+What: The XFS nodelaylog mount option598598+When: 3.3599599+Why: The delaylog mode that has been the default since 2.6.39 has proven600600+ stable, and the old code is in the way of additional improvements in601601+ the log code.602602+Who: Christoph Hellwig <hch@lst.de>
+11-3
fs/xfs/xfs_iops.c
···7070}71717272/*7373- * If the linux inode is valid, mark it dirty.7474- * Used when committing a dirty inode into a transaction so that7575- * the inode will get written back by the linux code7373+ * If the linux inode is valid, mark it dirty, else mark the dirty state7474+ * in the XFS inode to make sure we pick it up when reclaiming the inode.7675 */7776void7877xfs_mark_inode_dirty_sync(···81828283 if (!(inode->i_state & (I_WILL_FREE|I_FREEING)))8384 mark_inode_dirty_sync(inode);8585+ else {8686+ barrier();8787+ ip->i_update_core = 1;8888+ }8489}85908691void···95929693 if (!(inode->i_state & (I_WILL_FREE|I_FREEING)))9794 mark_inode_dirty(inode);9595+ else {9696+ barrier();9797+ ip->i_update_core = 1;9898+ }9999+98100}99101100102/*
+11-25
fs/xfs/xfs_super.c
···356356 mp->m_flags |= XFS_MOUNT_DELAYLOG;357357 } else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) {358358 mp->m_flags &= ~XFS_MOUNT_DELAYLOG;359359+ xfs_warn(mp,360360+ "nodelaylog is deprecated and will be removed in Linux 3.3");359361 } else if (!strcmp(this_char, MNTOPT_DISCARD)) {360362 mp->m_flags |= XFS_MOUNT_DISCARD;361363 } else if (!strcmp(this_char, MNTOPT_NODISCARD)) {···879877 struct xfs_trans *tp;880878 int error;881879882882- xfs_iunlock(ip, XFS_ILOCK_SHARED);883880 tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS);884881 error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0);885885-886882 if (error) {887883 xfs_trans_cancel(tp, 0);888888- /* we need to return with the lock hold shared */889889- xfs_ilock(ip, XFS_ILOCK_SHARED);890884 return error;891885 }892886893887 xfs_ilock(ip, XFS_ILOCK_EXCL);894894-895895- /*896896- * Note - it's possible that we might have pushed ourselves out of the897897- * way during trans_reserve which would flush the inode. But there's898898- * no guarantee that the inode buffer has actually gone out yet (it's899899- * delwri). Plus the buffer could be pinned anyway if it's part of900900- * an inode in another recent transaction. So we play it safe and901901- * fire off the transaction anyway.902902- */903903- xfs_trans_ijoin(tp, ip);888888+ xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);904889 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);905905- error = xfs_trans_commit(tp, 0);906906- xfs_ilock_demote(ip, XFS_ILOCK_EXCL);907907-908908- return error;890890+ return xfs_trans_commit(tp, 0);909891}910892911893STATIC int···904918 trace_xfs_write_inode(ip);905919906920 if (XFS_FORCED_SHUTDOWN(mp))907907- return XFS_ERROR(EIO);921921+ return -XFS_ERROR(EIO);922922+ if (!ip->i_update_core)923923+ return 0;908924909925 if (wbc->sync_mode == WB_SYNC_ALL) {910926 /*···917929 * of synchronous log foces dramatically.918930 */919931 xfs_ioend_wait(ip);920920- xfs_ilock(ip, XFS_ILOCK_SHARED);921921- if (ip->i_update_core) {922922- error = xfs_log_inode(ip);923923- if (error)924924- goto out_unlock;925925- }932932+ error = xfs_log_inode(ip);933933+ if (error)934934+ goto out;935935+ return 0;926936 } else {927937 /*928938 * We make this non-blocking if the inode is contended, return