mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
This pull request includes the following UBI/UBIFS changes:
* access time support for UBIFS by Dongsheng Yang * random cleanups and bug fixes all over the place -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJWQmnVAAoJEEtJtSqsAOnWpnkP/0pUN+Cx58QJoJXxaSgClH/l QwYGznz4Fv3QuSafXJZy8CPzsTasaOOtoVKJPfPTvP8Drrl3FFbtdhqlqdx1YKqw DuKeViwmE/HF49a5pxgtR8032l35s3zZUWwd2yKA3B6SVEIsjAoWlIutyzKA/DiR R4mGVsfRevfzq1+l2YXGGZ8PJXMtRKnFTjzmIUJY0OeT3xCvl/uUFCid2x693aut GpJ6AMKGYcU+BuQJmb89wvdRYCHPdYEJr7TWq+GBxU3gDPlLY9302IhPq9ftv8Lp ClA0X3GZqVPR921XR+aA4ysRbfENT+UBewiBt2OEwQLnI6jxEn9EqsgErATxpOYy PEduYuU56mqc67EE4r7+YHfkidMSa8KrR9s+GpzR6JStW9HNGFDfGfCAK7BcdvWT +TuHfNk787Gbl4TO41iFI87s6zNQszYOpxBTEFYHx0FQWLNxD5c79UkisL+biqvJ bX8+7pClJQXcY0CXqe56GVQLC5v4HbvMmnstiNk52ihxEB0NT6htzWe/GPb/+UZ1 K+kOAT54DPeag3FK4J1WZ57cYyJHdbyASB5vKvb+A1IwzrYFo8P35GekoWNK7eAJ Od5mb++7pTEFSH7oSwsprPOmrHLRmXgRG8yhLRfqX1ZwFeyFdqGQxjce9O/QB1jo jr4dxAY6Gnjdo1q07QSI =9n2S -----END PGP SIGNATURE----- Merge tag 'upstream-4.4-rc1' of git://git.infradead.org/linux-ubifs Pull UBI/UBIFS updates from Richard Weinberger: - access time support for UBIFS by Dongsheng Yang - random cleanups and bug fixes all over the place * tag 'upstream-4.4-rc1' of git://git.infradead.org/linux-ubifs: ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs ubifs: make ubifs_[get|set]xattr atomic UBIFS: Delete unnecessary checks before the function call "iput" UBI: Remove in vain semicolon UBI: Fastmap: Fix PEB array type UBIFS: Fix possible memory leak in ubifs_readdir() fs/ubifs: remove unnecessary new_valid_dev check ubi: fastmap: Implement produce_free_peb() UBIFS: print verbose message when rescanning a corrupted node UBIFS: call dbg_is_power_cut() instead of reading c->dbg->pc_happened UBI: drop null test before destroy functions UBI: Update comments to reflect UBI_METAONLY flag UBI: Fix debug message UBI: Fix typo in comment UBI: Fastmap: Simplify expression UBIFS: fix a typo in comment of ubifs_budget_req UBIFS: use kmemdup rather than duplicating its implementation
This commit is contained in:
commit
01504f5e9e
17 changed files with 142 additions and 42 deletions
|
|
@ -1209,9 +1209,7 @@ static void destroy_ai(struct ubi_attach_info *ai)
|
|||
}
|
||||
}
|
||||
|
||||
if (ai->aeb_slab_cache)
|
||||
kmem_cache_destroy(ai->aeb_slab_cache);
|
||||
|
||||
kmem_cache_destroy(ai->aeb_slab_cache);
|
||||
kfree(ai);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -949,7 +949,7 @@ static long ubi_cdev_ioctl(struct file *file, unsigned int cmd,
|
|||
if (!req) {
|
||||
err = -ENOMEM;
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
err = copy_from_user(req, argp, sizeof(struct ubi_rnvol_req));
|
||||
if (err) {
|
||||
|
|
|
|||
|
|
@ -1358,7 +1358,7 @@ int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap,
|
|||
continue;
|
||||
|
||||
ubi_err(ubi, "LEB:%i:%i is PEB:%i instead of %i!",
|
||||
vol->vol_id, i, fm_eba[i][j],
|
||||
vol->vol_id, j, fm_eba[i][j],
|
||||
scan_eba[i][j]);
|
||||
ubi_assert(0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,6 +171,30 @@ void ubi_refill_pools(struct ubi_device *ubi)
|
|||
spin_unlock(&ubi->wl_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* produce_free_peb - produce a free physical eraseblock.
|
||||
* @ubi: UBI device description object
|
||||
*
|
||||
* This function tries to make a free PEB by means of synchronous execution of
|
||||
* pending works. This may be needed if, for example the background thread is
|
||||
* disabled. Returns zero in case of success and a negative error code in case
|
||||
* of failure.
|
||||
*/
|
||||
static int produce_free_peb(struct ubi_device *ubi)
|
||||
{
|
||||
int err;
|
||||
|
||||
while (!ubi->free.rb_node && ubi->works_count) {
|
||||
dbg_wl("do one work synchronously");
|
||||
err = do_work(ubi);
|
||||
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ubi_wl_get_peb - get a physical eraseblock.
|
||||
* @ubi: UBI device description object
|
||||
|
|
@ -213,6 +237,11 @@ again:
|
|||
}
|
||||
retried = 1;
|
||||
up_read(&ubi->fm_eba_sem);
|
||||
ret = produce_free_peb(ubi);
|
||||
if (ret < 0) {
|
||||
down_read(&ubi->fm_eba_sem);
|
||||
goto out;
|
||||
}
|
||||
goto again;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ static void unmap_peb(struct ubi_attach_info *ai, int pnum)
|
|||
* < 0 indicates an internal error.
|
||||
*/
|
||||
static int scan_pool(struct ubi_device *ubi, struct ubi_attach_info *ai,
|
||||
int *pebs, int pool_size, unsigned long long *max_sqnum,
|
||||
__be32 *pebs, int pool_size, unsigned long long *max_sqnum,
|
||||
struct list_head *free)
|
||||
{
|
||||
struct ubi_vid_hdr *vh;
|
||||
|
|
@ -775,7 +775,7 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,
|
|||
for (j = 0; j < be32_to_cpu(fm_eba->reserved_pebs); j++) {
|
||||
int pnum = be32_to_cpu(fm_eba->pnum[j]);
|
||||
|
||||
if ((int)be32_to_cpu(fm_eba->pnum[j]) < 0)
|
||||
if (pnum < 0)
|
||||
continue;
|
||||
|
||||
aeb = NULL;
|
||||
|
|
|
|||
|
|
@ -500,7 +500,7 @@ struct ubi_fm_volhdr {
|
|||
/* struct ubi_fm_volhdr is followed by one struct ubi_fm_eba records */
|
||||
|
||||
/**
|
||||
* struct ubi_fm_eba - denotes an association beween a PEB and LEB
|
||||
* struct ubi_fm_eba - denotes an association between a PEB and LEB
|
||||
* @magic: EBA table magic number
|
||||
* @reserved_pebs: number of table entries
|
||||
* @pnum: PEB number of LEB (LEB is the index)
|
||||
|
|
|
|||
Loading…
Reference in a new issue