diff options
author | Dave Chinner <david@fromorbit.com> | 2014-10-12 19:22:45 -0400 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2014-10-12 19:22:45 -0400 |
commit | 6889e783cd68b79f8330ad4d10a2571c67c3f7df (patch) | |
tree | 6ebb3900542a9d449e9c5d9b5191f35845f40130 /fs | |
parent | 75e58ce4c8f354f1a68a8bb8a9692827cdaf3d21 (diff) | |
parent | a8b1ee8bafc765ebf029d03c5479a69aebff9693 (diff) |
Merge branch 'xfs-misc-fixes-for-3.18-3' into for-next
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/kmem.c | 1 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_da_btree.c | 3 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_sb.c | 5 | ||||
-rw-r--r-- | fs/xfs/time.h | 36 | ||||
-rw-r--r-- | fs/xfs/xfs_aops.c | 7 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap_util.c | 14 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 8 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.h | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_inode_item.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_ioctl.c | 20 | ||||
-rw-r--r-- | fs/xfs/xfs_ioctl32.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_ioctl32.h | 3 | ||||
-rw-r--r-- | fs/xfs/xfs_iomap.c | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_itable.c | 3 | ||||
-rw-r--r-- | fs/xfs/xfs_linux.h | 6 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_inode.c | 2 |
16 files changed, 57 insertions, 61 deletions
diff --git a/fs/xfs/kmem.c b/fs/xfs/kmem.c index 844e288b9576..53e95b2a1369 100644 --- a/fs/xfs/kmem.c +++ b/fs/xfs/kmem.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/swap.h> | 21 | #include <linux/swap.h> |
22 | #include <linux/blkdev.h> | 22 | #include <linux/blkdev.h> |
23 | #include <linux/backing-dev.h> | 23 | #include <linux/backing-dev.h> |
24 | #include "time.h" | ||
25 | #include "kmem.h" | 24 | #include "kmem.h" |
26 | #include "xfs_message.h" | 25 | #include "xfs_message.h" |
27 | 26 | ||
diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c index 2c42ae28d027..fd827530afec 100644 --- a/fs/xfs/libxfs/xfs_da_btree.c +++ b/fs/xfs/libxfs/xfs_da_btree.c | |||
@@ -2563,7 +2563,8 @@ xfs_da_get_buf( | |||
2563 | mapp, nmap, 0); | 2563 | mapp, nmap, 0); |
2564 | error = bp ? bp->b_error : -EIO; | 2564 | error = bp ? bp->b_error : -EIO; |
2565 | if (error) { | 2565 | if (error) { |
2566 | xfs_trans_brelse(trans, bp); | 2566 | if (bp) |
2567 | xfs_trans_brelse(trans, bp); | ||
2567 | goto out_free; | 2568 | goto out_free; |
2568 | } | 2569 | } |
2569 | 2570 | ||
diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c index 8426e5e2682e..5f902fa7913f 100644 --- a/fs/xfs/libxfs/xfs_sb.c +++ b/fs/xfs/libxfs/xfs_sb.c | |||
@@ -445,6 +445,8 @@ __xfs_sb_from_disk( | |||
445 | to->sb_features_incompat = be32_to_cpu(from->sb_features_incompat); | 445 | to->sb_features_incompat = be32_to_cpu(from->sb_features_incompat); |
446 | to->sb_features_log_incompat = | 446 | to->sb_features_log_incompat = |
447 | be32_to_cpu(from->sb_features_log_incompat); | 447 | be32_to_cpu(from->sb_features_log_incompat); |
448 | /* crc is only used on disk, not in memory; just init to 0 here. */ | ||
449 | to->sb_crc = 0; | ||
448 | to->sb_pad = 0; | 450 | to->sb_pad = 0; |
449 | to->sb_pquotino = be64_to_cpu(from->sb_pquotino); | 451 | to->sb_pquotino = be64_to_cpu(from->sb_pquotino); |
450 | to->sb_lsn = be64_to_cpu(from->sb_lsn); | 452 | to->sb_lsn = be64_to_cpu(from->sb_lsn); |
@@ -550,6 +552,9 @@ xfs_sb_to_disk( | |||
550 | if (!fields) | 552 | if (!fields) |
551 | return; | 553 | return; |
552 | 554 | ||
555 | /* We should never write the crc here, it's updated in the IO path */ | ||
556 | fields &= ~XFS_SB_CRC; | ||
557 | |||
553 | xfs_sb_quota_to_disk(to, from, &fields); | 558 | xfs_sb_quota_to_disk(to, from, &fields); |
554 | while (fields) { | 559 | while (fields) { |
555 | f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); | 560 | f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); |
diff --git a/fs/xfs/time.h b/fs/xfs/time.h deleted file mode 100644 index 387e695a184c..000000000000 --- a/fs/xfs/time.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #ifndef __XFS_SUPPORT_TIME_H__ | ||
19 | #define __XFS_SUPPORT_TIME_H__ | ||
20 | |||
21 | #include <linux/sched.h> | ||
22 | #include <linux/time.h> | ||
23 | |||
24 | typedef struct timespec timespec_t; | ||
25 | |||
26 | static inline void delay(long ticks) | ||
27 | { | ||
28 | schedule_timeout_uninterruptible(ticks); | ||
29 | } | ||
30 | |||
31 | static inline void nanotime(struct timespec *tvp) | ||
32 | { | ||
33 | *tvp = CURRENT_TIME; | ||
34 | } | ||
35 | |||
36 | #endif /* __XFS_SUPPORT_TIME_H__ */ | ||
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index 2f502537a39c..f5b2453a43b2 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c | |||
@@ -560,6 +560,13 @@ xfs_cancel_ioend( | |||
560 | do { | 560 | do { |
561 | next_bh = bh->b_private; | 561 | next_bh = bh->b_private; |
562 | clear_buffer_async_write(bh); | 562 | clear_buffer_async_write(bh); |
563 | /* | ||
564 | * The unwritten flag is cleared when added to the | ||
565 | * ioend. We're not submitting for I/O so mark the | ||
566 | * buffer unwritten again for next time around. | ||
567 | */ | ||
568 | if (ioend->io_type == XFS_IO_UNWRITTEN) | ||
569 | set_buffer_unwritten(bh); | ||
563 | unlock_buffer(bh); | 570 | unlock_buffer(bh); |
564 | } while ((bh = next_bh) != NULL); | 571 | } while ((bh = next_bh) != NULL); |
565 | 572 | ||
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index c2aaa58e59ee..92e8f99a5857 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c | |||
@@ -1368,14 +1368,14 @@ xfs_zero_file_space( | |||
1368 | 1368 | ||
1369 | if (start_boundary < end_boundary - 1) { | 1369 | if (start_boundary < end_boundary - 1) { |
1370 | /* | 1370 | /* |
1371 | * punch out delayed allocation blocks and the page cache over | 1371 | * Writeback the range to ensure any inode size updates due to |
1372 | * the conversion range | 1372 | * appending writes make it to disk (otherwise we could just |
1373 | * punch out the delalloc blocks). | ||
1373 | */ | 1374 | */ |
1374 | xfs_ilock(ip, XFS_ILOCK_EXCL); | 1375 | error = filemap_write_and_wait_range(VFS_I(ip)->i_mapping, |
1375 | error = xfs_bmap_punch_delalloc_range(ip, | 1376 | start_boundary, end_boundary - 1); |
1376 | XFS_B_TO_FSBT(mp, start_boundary), | 1377 | if (error) |
1377 | XFS_B_TO_FSB(mp, end_boundary - start_boundary)); | 1378 | goto out; |
1378 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | ||
1379 | truncate_pagecache_range(VFS_I(ip), start_boundary, | 1379 | truncate_pagecache_range(VFS_I(ip), start_boundary, |
1380 | end_boundary - 1); | 1380 | end_boundary - 1); |
1381 | 1381 | ||
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index e5bbc1f30f16..8ed049d1e332 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -654,7 +654,7 @@ xfs_ialloc( | |||
654 | xfs_inode_t *ip; | 654 | xfs_inode_t *ip; |
655 | uint flags; | 655 | uint flags; |
656 | int error; | 656 | int error; |
657 | timespec_t tv; | 657 | struct timespec tv; |
658 | 658 | ||
659 | /* | 659 | /* |
660 | * Call the space management code to pick | 660 | * Call the space management code to pick |
@@ -720,7 +720,7 @@ xfs_ialloc( | |||
720 | ip->i_d.di_nextents = 0; | 720 | ip->i_d.di_nextents = 0; |
721 | ASSERT(ip->i_d.di_nblocks == 0); | 721 | ASSERT(ip->i_d.di_nblocks == 0); |
722 | 722 | ||
723 | nanotime(&tv); | 723 | tv = current_fs_time(mp->m_super); |
724 | ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec; | 724 | ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec; |
725 | ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec; | 725 | ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec; |
726 | ip->i_d.di_atime = ip->i_d.di_mtime; | 726 | ip->i_d.di_atime = ip->i_d.di_mtime; |
@@ -769,6 +769,8 @@ xfs_ialloc( | |||
769 | di_flags |= XFS_DIFLAG_EXTSZINHERIT; | 769 | di_flags |= XFS_DIFLAG_EXTSZINHERIT; |
770 | ip->i_d.di_extsize = pip->i_d.di_extsize; | 770 | ip->i_d.di_extsize = pip->i_d.di_extsize; |
771 | } | 771 | } |
772 | if (pip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) | ||
773 | di_flags |= XFS_DIFLAG_PROJINHERIT; | ||
772 | } else if (S_ISREG(mode)) { | 774 | } else if (S_ISREG(mode)) { |
773 | if (pip->i_d.di_flags & XFS_DIFLAG_RTINHERIT) | 775 | if (pip->i_d.di_flags & XFS_DIFLAG_RTINHERIT) |
774 | di_flags |= XFS_DIFLAG_REALTIME; | 776 | di_flags |= XFS_DIFLAG_REALTIME; |
@@ -789,8 +791,6 @@ xfs_ialloc( | |||
789 | if ((pip->i_d.di_flags & XFS_DIFLAG_NOSYMLINKS) && | 791 | if ((pip->i_d.di_flags & XFS_DIFLAG_NOSYMLINKS) && |
790 | xfs_inherit_nosymlinks) | 792 | xfs_inherit_nosymlinks) |
791 | di_flags |= XFS_DIFLAG_NOSYMLINKS; | 793 | di_flags |= XFS_DIFLAG_NOSYMLINKS; |
792 | if (pip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) | ||
793 | di_flags |= XFS_DIFLAG_PROJINHERIT; | ||
794 | if ((pip->i_d.di_flags & XFS_DIFLAG_NODEFRAG) && | 794 | if ((pip->i_d.di_flags & XFS_DIFLAG_NODEFRAG) && |
795 | xfs_inherit_nodefrag) | 795 | xfs_inherit_nodefrag) |
796 | di_flags |= XFS_DIFLAG_NODEFRAG; | 796 | di_flags |= XFS_DIFLAG_NODEFRAG; |
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index c10e3fadd9af..9af2882e1f4c 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h | |||
@@ -102,7 +102,7 @@ xfs_new_eof(struct xfs_inode *ip, xfs_fsize_t new_size) | |||
102 | { | 102 | { |
103 | xfs_fsize_t i_size = i_size_read(VFS_I(ip)); | 103 | xfs_fsize_t i_size = i_size_read(VFS_I(ip)); |
104 | 104 | ||
105 | if (new_size > i_size) | 105 | if (new_size > i_size || new_size < 0) |
106 | new_size = i_size; | 106 | new_size = i_size; |
107 | return new_size > ip->i_d.di_size ? new_size : 0; | 107 | return new_size > ip->i_d.di_size ? new_size : 0; |
108 | } | 108 | } |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index de5a7be36e60..63de0b0acc32 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -615,7 +615,7 @@ xfs_iflush_done( | |||
615 | blip = bp->b_fspriv; | 615 | blip = bp->b_fspriv; |
616 | prev = NULL; | 616 | prev = NULL; |
617 | while (blip != NULL) { | 617 | while (blip != NULL) { |
618 | if (lip->li_cb != xfs_iflush_done) { | 618 | if (blip->li_cb != xfs_iflush_done) { |
619 | prev = blip; | 619 | prev = blip; |
620 | blip = blip->li_bio_list; | 620 | blip = blip->li_bio_list; |
621 | continue; | 621 | continue; |
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 7a6b406ce6c9..24c926b6fe85 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c | |||
@@ -968,8 +968,6 @@ xfs_set_diflags( | |||
968 | di_flags |= XFS_DIFLAG_NOATIME; | 968 | di_flags |= XFS_DIFLAG_NOATIME; |
969 | if (xflags & XFS_XFLAG_NODUMP) | 969 | if (xflags & XFS_XFLAG_NODUMP) |
970 | di_flags |= XFS_DIFLAG_NODUMP; | 970 | di_flags |= XFS_DIFLAG_NODUMP; |
971 | if (xflags & XFS_XFLAG_PROJINHERIT) | ||
972 | di_flags |= XFS_DIFLAG_PROJINHERIT; | ||
973 | if (xflags & XFS_XFLAG_NODEFRAG) | 971 | if (xflags & XFS_XFLAG_NODEFRAG) |
974 | di_flags |= XFS_DIFLAG_NODEFRAG; | 972 | di_flags |= XFS_DIFLAG_NODEFRAG; |
975 | if (xflags & XFS_XFLAG_FILESTREAM) | 973 | if (xflags & XFS_XFLAG_FILESTREAM) |
@@ -981,6 +979,8 @@ xfs_set_diflags( | |||
981 | di_flags |= XFS_DIFLAG_NOSYMLINKS; | 979 | di_flags |= XFS_DIFLAG_NOSYMLINKS; |
982 | if (xflags & XFS_XFLAG_EXTSZINHERIT) | 980 | if (xflags & XFS_XFLAG_EXTSZINHERIT) |
983 | di_flags |= XFS_DIFLAG_EXTSZINHERIT; | 981 | di_flags |= XFS_DIFLAG_EXTSZINHERIT; |
982 | if (xflags & XFS_XFLAG_PROJINHERIT) | ||
983 | di_flags |= XFS_DIFLAG_PROJINHERIT; | ||
984 | } else if (S_ISREG(ip->i_d.di_mode)) { | 984 | } else if (S_ISREG(ip->i_d.di_mode)) { |
985 | if (xflags & XFS_XFLAG_REALTIME) | 985 | if (xflags & XFS_XFLAG_REALTIME) |
986 | di_flags |= XFS_DIFLAG_REALTIME; | 986 | di_flags |= XFS_DIFLAG_REALTIME; |
@@ -1231,13 +1231,25 @@ xfs_ioctl_setattr( | |||
1231 | 1231 | ||
1232 | } | 1232 | } |
1233 | 1233 | ||
1234 | if (mask & FSX_EXTSIZE) | ||
1235 | ip->i_d.di_extsize = fa->fsx_extsize >> mp->m_sb.sb_blocklog; | ||
1236 | if (mask & FSX_XFLAGS) { | 1234 | if (mask & FSX_XFLAGS) { |
1237 | xfs_set_diflags(ip, fa->fsx_xflags); | 1235 | xfs_set_diflags(ip, fa->fsx_xflags); |
1238 | xfs_diflags_to_linux(ip); | 1236 | xfs_diflags_to_linux(ip); |
1239 | } | 1237 | } |
1240 | 1238 | ||
1239 | /* | ||
1240 | * Only set the extent size hint if we've already determined that the | ||
1241 | * extent size hint should be set on the inode. If no extent size flags | ||
1242 | * are set on the inode then unconditionally clear the extent size hint. | ||
1243 | */ | ||
1244 | if (mask & FSX_EXTSIZE) { | ||
1245 | int extsize = 0; | ||
1246 | |||
1247 | if (ip->i_d.di_flags & | ||
1248 | (XFS_DIFLAG_EXTSIZE | XFS_DIFLAG_EXTSZINHERIT)) | ||
1249 | extsize = fa->fsx_extsize >> mp->m_sb.sb_blocklog; | ||
1250 | ip->i_d.di_extsize = extsize; | ||
1251 | } | ||
1252 | |||
1241 | xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG); | 1253 | xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG); |
1242 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); | 1254 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); |
1243 | 1255 | ||
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c index a554646ff141..94ce027e28e3 100644 --- a/fs/xfs/xfs_ioctl32.c +++ b/fs/xfs/xfs_ioctl32.c | |||
@@ -160,6 +160,7 @@ xfs_ioctl32_bstat_copyin( | |||
160 | get_user(bstat->bs_gen, &bstat32->bs_gen) || | 160 | get_user(bstat->bs_gen, &bstat32->bs_gen) || |
161 | get_user(bstat->bs_projid_lo, &bstat32->bs_projid_lo) || | 161 | get_user(bstat->bs_projid_lo, &bstat32->bs_projid_lo) || |
162 | get_user(bstat->bs_projid_hi, &bstat32->bs_projid_hi) || | 162 | get_user(bstat->bs_projid_hi, &bstat32->bs_projid_hi) || |
163 | get_user(bstat->bs_forkoff, &bstat32->bs_forkoff) || | ||
163 | get_user(bstat->bs_dmevmask, &bstat32->bs_dmevmask) || | 164 | get_user(bstat->bs_dmevmask, &bstat32->bs_dmevmask) || |
164 | get_user(bstat->bs_dmstate, &bstat32->bs_dmstate) || | 165 | get_user(bstat->bs_dmstate, &bstat32->bs_dmstate) || |
165 | get_user(bstat->bs_aextents, &bstat32->bs_aextents)) | 166 | get_user(bstat->bs_aextents, &bstat32->bs_aextents)) |
@@ -214,6 +215,7 @@ xfs_bulkstat_one_fmt_compat( | |||
214 | put_user(buffer->bs_gen, &p32->bs_gen) || | 215 | put_user(buffer->bs_gen, &p32->bs_gen) || |
215 | put_user(buffer->bs_projid, &p32->bs_projid) || | 216 | put_user(buffer->bs_projid, &p32->bs_projid) || |
216 | put_user(buffer->bs_projid_hi, &p32->bs_projid_hi) || | 217 | put_user(buffer->bs_projid_hi, &p32->bs_projid_hi) || |
218 | put_user(buffer->bs_forkoff, &p32->bs_forkoff) || | ||
217 | put_user(buffer->bs_dmevmask, &p32->bs_dmevmask) || | 219 | put_user(buffer->bs_dmevmask, &p32->bs_dmevmask) || |
218 | put_user(buffer->bs_dmstate, &p32->bs_dmstate) || | 220 | put_user(buffer->bs_dmstate, &p32->bs_dmstate) || |
219 | put_user(buffer->bs_aextents, &p32->bs_aextents)) | 221 | put_user(buffer->bs_aextents, &p32->bs_aextents)) |
diff --git a/fs/xfs/xfs_ioctl32.h b/fs/xfs/xfs_ioctl32.h index 80f4060e8970..b1bb45444df8 100644 --- a/fs/xfs/xfs_ioctl32.h +++ b/fs/xfs/xfs_ioctl32.h | |||
@@ -67,8 +67,9 @@ typedef struct compat_xfs_bstat { | |||
67 | __u32 bs_gen; /* generation count */ | 67 | __u32 bs_gen; /* generation count */ |
68 | __u16 bs_projid_lo; /* lower part of project id */ | 68 | __u16 bs_projid_lo; /* lower part of project id */ |
69 | #define bs_projid bs_projid_lo /* (previously just bs_projid) */ | 69 | #define bs_projid bs_projid_lo /* (previously just bs_projid) */ |
70 | __u16 bs_forkoff; /* inode fork offset in bytes */ | ||
70 | __u16 bs_projid_hi; /* high part of project id */ | 71 | __u16 bs_projid_hi; /* high part of project id */ |
71 | unsigned char bs_pad[12]; /* pad space, unused */ | 72 | unsigned char bs_pad[10]; /* pad space, unused */ |
72 | __u32 bs_dmevmask; /* DMIG event mask */ | 73 | __u32 bs_dmevmask; /* DMIG event mask */ |
73 | __u16 bs_dmstate; /* DMIG state info */ | 74 | __u16 bs_dmstate; /* DMIG state info */ |
74 | __u16 bs_aextents; /* attribute number of extents */ | 75 | __u16 bs_aextents; /* attribute number of extents */ |
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index e9c47b6f5e5a..afcf3c926565 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c | |||
@@ -404,8 +404,8 @@ xfs_quota_calc_throttle( | |||
404 | int shift = 0; | 404 | int shift = 0; |
405 | struct xfs_dquot *dq = xfs_inode_dquot(ip, type); | 405 | struct xfs_dquot *dq = xfs_inode_dquot(ip, type); |
406 | 406 | ||
407 | /* over hi wmark, squash the prealloc completely */ | 407 | /* no dq, or over hi wmark, squash the prealloc completely */ |
408 | if (dq->q_res_bcount >= dq->q_prealloc_hi_wmark) { | 408 | if (!dq || dq->q_res_bcount >= dq->q_prealloc_hi_wmark) { |
409 | *qblocks = 0; | 409 | *qblocks = 0; |
410 | *qfreesp = 0; | 410 | *qfreesp = 0; |
411 | return; | 411 | return; |
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index f71be9c68017..f1deb961a296 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -639,7 +639,8 @@ next_ag: | |||
639 | xfs_buf_relse(agbp); | 639 | xfs_buf_relse(agbp); |
640 | agbp = NULL; | 640 | agbp = NULL; |
641 | agino = 0; | 641 | agino = 0; |
642 | } while (++agno < mp->m_sb.sb_agcount); | 642 | agno++; |
643 | } while (agno < mp->m_sb.sb_agcount); | ||
643 | 644 | ||
644 | if (!error) { | 645 | if (!error) { |
645 | if (bufidx) { | 646 | if (bufidx) { |
diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index d10dc8f397c9..6a51619d8690 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h | |||
@@ -56,7 +56,6 @@ typedef __uint64_t __psunsigned_t; | |||
56 | 56 | ||
57 | #include "kmem.h" | 57 | #include "kmem.h" |
58 | #include "mrlock.h" | 58 | #include "mrlock.h" |
59 | #include "time.h" | ||
60 | #include "uuid.h" | 59 | #include "uuid.h" |
61 | 60 | ||
62 | #include <linux/semaphore.h> | 61 | #include <linux/semaphore.h> |
@@ -179,6 +178,11 @@ typedef __uint64_t __psunsigned_t; | |||
179 | #define MAX(a,b) (max(a,b)) | 178 | #define MAX(a,b) (max(a,b)) |
180 | #define howmany(x, y) (((x)+((y)-1))/(y)) | 179 | #define howmany(x, y) (((x)+((y)-1))/(y)) |
181 | 180 | ||
181 | static inline void delay(long ticks) | ||
182 | { | ||
183 | schedule_timeout_uninterruptible(ticks); | ||
184 | } | ||
185 | |||
182 | /* | 186 | /* |
183 | * XFS wrapper structure for sysfs support. It depends on external data | 187 | * XFS wrapper structure for sysfs support. It depends on external data |
184 | * structures and is embedded in various internal data structures to implement | 188 | * structures and is embedded in various internal data structures to implement |
diff --git a/fs/xfs/xfs_trans_inode.c b/fs/xfs/xfs_trans_inode.c index 50c3f5614288..cdb4d86520e1 100644 --- a/fs/xfs/xfs_trans_inode.c +++ b/fs/xfs/xfs_trans_inode.c | |||
@@ -70,7 +70,7 @@ xfs_trans_ichgtime( | |||
70 | int flags) | 70 | int flags) |
71 | { | 71 | { |
72 | struct inode *inode = VFS_I(ip); | 72 | struct inode *inode = VFS_I(ip); |
73 | timespec_t tv; | 73 | struct timespec tv; |
74 | 74 | ||
75 | ASSERT(tp); | 75 | ASSERT(tp); |
76 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); | 76 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |