diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2013-05-06 17:38:00 -0400 |
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2013-05-06 17:38:00 -0400 |
| commit | 4183bef2e093a2f0aab45f2d5fed82b0e02aeacf (patch) | |
| tree | e84c484db3746a0f3ead0fb7a2bb9e5a42b89e85 /fs | |
| parent | 662478d060a39b8faf2b1fe2fbbb212556c2e052 (diff) | |
| parent | 775c4f66fd855e68a98fc5049003810fe98e2e20 (diff) | |
Merge branch 'late/dt' into next/dt2
This is support for the ARM Chromebook, originally scheduled
as a "late" pull request. Since it's already late now, we
can combine this into the existing next/dt2 branch.
* late/dt:
ARM: exynos: dts: cros5250: add EC device
ARM: dts: Add sbs-battery for exynos5250-snow
ARM: dts: Add i2c-arbitrator bus for exynos5250-snow
ARM: dts: Add chip-id controller node on Exynos4/5 SoC
ARM: EXYNOS: Create virtual I/O mapping for Chip-ID controller using device tree
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/block_dev.c | 1 | ||||
| -rw-r--r-- | fs/btrfs/tree-log.c | 48 | ||||
| -rw-r--r-- | fs/cifs/connect.c | 16 | ||||
| -rw-r--r-- | fs/ecryptfs/miscdev.c | 14 | ||||
| -rw-r--r-- | fs/ext4/extents.c | 11 | ||||
| -rw-r--r-- | fs/ext4/indirect.c | 4 | ||||
| -rw-r--r-- | fs/gfs2/file.c | 5 | ||||
| -rw-r--r-- | fs/gfs2/incore.h | 1 | ||||
| -rw-r--r-- | fs/gfs2/lock_dlm.c | 39 | ||||
| -rw-r--r-- | fs/gfs2/rgrp.c | 32 | ||||
| -rw-r--r-- | fs/inode.c | 2 | ||||
| -rw-r--r-- | fs/namespace.c | 2 | ||||
| -rw-r--r-- | fs/nfs/nfs4client.c | 45 | ||||
| -rw-r--r-- | fs/nfs/nfs4proc.c | 1 | ||||
| -rw-r--r-- | fs/nfs/nfs4state.c | 8 | ||||
| -rw-r--r-- | fs/nfsd/nfs4xdr.c | 2 | ||||
| -rw-r--r-- | fs/proc/generic.c | 119 | ||||
| -rw-r--r-- | fs/reiserfs/xattr.c | 4 | ||||
| -rw-r--r-- | fs/ubifs/super.c | 12 |
19 files changed, 243 insertions, 123 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index aea605c98ba6..aae187a7f94a 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
| @@ -551,6 +551,7 @@ struct block_device *bdgrab(struct block_device *bdev) | |||
| 551 | ihold(bdev->bd_inode); | 551 | ihold(bdev->bd_inode); |
| 552 | return bdev; | 552 | return bdev; |
| 553 | } | 553 | } |
| 554 | EXPORT_SYMBOL(bdgrab); | ||
| 554 | 555 | ||
| 555 | long nr_blockdev_pages(void) | 556 | long nr_blockdev_pages(void) |
| 556 | { | 557 | { |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 451fad96ecd1..ef96381569a4 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
| @@ -317,6 +317,7 @@ static noinline int overwrite_item(struct btrfs_trans_handle *trans, | |||
| 317 | unsigned long src_ptr; | 317 | unsigned long src_ptr; |
| 318 | unsigned long dst_ptr; | 318 | unsigned long dst_ptr; |
| 319 | int overwrite_root = 0; | 319 | int overwrite_root = 0; |
| 320 | bool inode_item = key->type == BTRFS_INODE_ITEM_KEY; | ||
| 320 | 321 | ||
| 321 | if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) | 322 | if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) |
| 322 | overwrite_root = 1; | 323 | overwrite_root = 1; |
| @@ -326,6 +327,9 @@ static noinline int overwrite_item(struct btrfs_trans_handle *trans, | |||
| 326 | 327 | ||
| 327 | /* look for the key in the destination tree */ | 328 | /* look for the key in the destination tree */ |
| 328 | ret = btrfs_search_slot(NULL, root, key, path, 0, 0); | 329 | ret = btrfs_search_slot(NULL, root, key, path, 0, 0); |
| 330 | if (ret < 0) | ||
| 331 | return ret; | ||
| 332 | |||
| 329 | if (ret == 0) { | 333 | if (ret == 0) { |
| 330 | char *src_copy; | 334 | char *src_copy; |
| 331 | char *dst_copy; | 335 | char *dst_copy; |
| @@ -367,6 +371,30 @@ static noinline int overwrite_item(struct btrfs_trans_handle *trans, | |||
| 367 | return 0; | 371 | return 0; |
| 368 | } | 372 | } |
| 369 | 373 | ||
| 374 | /* | ||
| 375 | * We need to load the old nbytes into the inode so when we | ||
| 376 | * replay the extents we've logged we get the right nbytes. | ||
| 377 | */ | ||
| 378 | if (inode_item) { | ||
| 379 | struct btrfs_inode_item *item; | ||
| 380 | u64 nbytes; | ||
| 381 | |||
| 382 | item = btrfs_item_ptr(path->nodes[0], path->slots[0], | ||
| 383 | struct btrfs_inode_item); | ||
| 384 | nbytes = btrfs_inode_nbytes(path->nodes[0], item); | ||
| 385 | item = btrfs_item_ptr(eb, slot, | ||
| 386 | struct btrfs_inode_item); | ||
| 387 | btrfs_set_inode_nbytes(eb, item, nbytes); | ||
| 388 | } | ||
| 389 | } else if (inode_item) { | ||
| 390 | struct btrfs_inode_item *item; | ||
| 391 | |||
| 392 | /* | ||
| 393 | * New inode, set nbytes to 0 so that the nbytes comes out | ||
| 394 | * properly when we replay the extents. | ||
| 395 | */ | ||
| 396 | item = btrfs_item_ptr(eb, slot, struct btrfs_inode_item); | ||
| 397 | btrfs_set_inode_nbytes(eb, item, 0); | ||
| 370 | } | 398 | } |
| 371 | insert: | 399 | insert: |
| 372 | btrfs_release_path(path); | 400 | btrfs_release_path(path); |
| @@ -486,7 +514,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, | |||
| 486 | int found_type; | 514 | int found_type; |
| 487 | u64 extent_end; | 515 | u64 extent_end; |
| 488 | u64 start = key->offset; | 516 | u64 start = key->offset; |
| 489 | u64 saved_nbytes; | 517 | u64 nbytes = 0; |
| 490 | struct btrfs_file_extent_item *item; | 518 | struct btrfs_file_extent_item *item; |
| 491 | struct inode *inode = NULL; | 519 | struct inode *inode = NULL; |
| 492 | unsigned long size; | 520 | unsigned long size; |
| @@ -496,10 +524,19 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, | |||
| 496 | found_type = btrfs_file_extent_type(eb, item); | 524 | found_type = btrfs_file_extent_type(eb, item); |
| 497 | 525 | ||
| 498 | if (found_type == BTRFS_FILE_EXTENT_REG || | 526 | if (found_type == BTRFS_FILE_EXTENT_REG || |
| 499 | found_type == BTRFS_FILE_EXTENT_PREALLOC) | 527 | found_type == BTRFS_FILE_EXTENT_PREALLOC) { |
| 500 | extent_end = start + btrfs_file_extent_num_bytes(eb, item); | 528 | nbytes = btrfs_file_extent_num_bytes(eb, item); |
| 501 | else if (found_type == BTRFS_FILE_EXTENT_INLINE) { | 529 | extent_end = start + nbytes; |
| 530 | |||
| 531 | /* | ||
| 532 | * We don't add to the inodes nbytes if we are prealloc or a | ||
| 533 | * hole. | ||
| 534 | */ | ||
| 535 | if (btrfs_file_extent_disk_bytenr(eb, item) == 0) | ||
| 536 | nbytes = 0; | ||
| 537 | } else if (found_type == BTRFS_FILE_EXTENT_INLINE) { | ||
| 502 | size = btrfs_file_extent_inline_len(eb, item); | 538 | size = btrfs_file_extent_inline_len(eb, item); |
| 539 | nbytes = btrfs_file_extent_ram_bytes(eb, item); | ||
| 503 | extent_end = ALIGN(start + size, root->sectorsize); | 540 | extent_end = ALIGN(start + size, root->sectorsize); |
| 504 | } else { | 541 | } else { |
| 505 | ret = 0; | 542 | ret = 0; |
| @@ -548,7 +585,6 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, | |||
| 548 | } | 585 | } |
| 549 | btrfs_release_path(path); | 586 | btrfs_release_path(path); |
| 550 | 587 | ||
| 551 | saved_nbytes = inode_get_bytes(inode); | ||
| 552 | /* drop any overlapping extents */ | 588 | /* drop any overlapping extents */ |
| 553 | ret = btrfs_drop_extents(trans, root, inode, start, extent_end, 1); | 589 | ret = btrfs_drop_extents(trans, root, inode, start, extent_end, 1); |
| 554 | BUG_ON(ret); | 590 | BUG_ON(ret); |
| @@ -635,7 +671,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, | |||
| 635 | BUG_ON(ret); | 671 | BUG_ON(ret); |
| 636 | } | 672 | } |
| 637 | 673 | ||
| 638 | inode_set_bytes(inode, saved_nbytes); | 674 | inode_add_bytes(inode, nbytes); |
| 639 | ret = btrfs_update_inode(trans, root, inode); | 675 | ret = btrfs_update_inode(trans, root, inode); |
| 640 | out: | 676 | out: |
| 641 | if (inode) | 677 | if (inode) |
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 991c63c6bdd0..21b3a291c327 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
| @@ -1575,14 +1575,24 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, | |||
| 1575 | } | 1575 | } |
| 1576 | break; | 1576 | break; |
| 1577 | case Opt_blank_pass: | 1577 | case Opt_blank_pass: |
| 1578 | vol->password = NULL; | ||
| 1579 | break; | ||
| 1580 | case Opt_pass: | ||
| 1581 | /* passwords have to be handled differently | 1578 | /* passwords have to be handled differently |
| 1582 | * to allow the character used for deliminator | 1579 | * to allow the character used for deliminator |
| 1583 | * to be passed within them | 1580 | * to be passed within them |
| 1584 | */ | 1581 | */ |
| 1585 | 1582 | ||
| 1583 | /* | ||
| 1584 | * Check if this is a case where the password | ||
| 1585 | * starts with a delimiter | ||
| 1586 | */ | ||
| 1587 | tmp_end = strchr(data, '='); | ||
| 1588 | tmp_end++; | ||
| 1589 | if (!(tmp_end < end && tmp_end[1] == delim)) { | ||
| 1590 | /* No it is not. Set the password to NULL */ | ||
| 1591 | vol->password = NULL; | ||
| 1592 | break; | ||
| 1593 | } | ||
| 1594 | /* Yes it is. Drop down to Opt_pass below.*/ | ||
| 1595 | case Opt_pass: | ||
| 1586 | /* Obtain the value string */ | 1596 | /* Obtain the value string */ |
| 1587 | value = strchr(data, '='); | 1597 | value = strchr(data, '='); |
| 1588 | value++; | 1598 | value++; |
diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c index 412e6eda25f8..e4141f257495 100644 --- a/fs/ecryptfs/miscdev.c +++ b/fs/ecryptfs/miscdev.c | |||
| @@ -80,13 +80,6 @@ ecryptfs_miscdev_open(struct inode *inode, struct file *file) | |||
