Merge tag 'ubifs-for-linus-6.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs

Pull UBI and UBIFS updates from Richard Weinberger:
 "UBI:
   - New interface to dump detailed erase counters
   - Fixes around wear-leveling

  UBIFS:
   - Minor cleanups
   - Fix for TNC dumping code"

* tag 'ubifs-for-linus-6.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs:
  ubi: ubi_get_ec_info: Fix compiling error 'cast specifies array type'
  ubi: Implement ioctl for detailed erase counters
  ubi: Expose interface for detailed erase counters
  ubifs: skip dumping tnc tree when zroot is null
  ubi: Revert "ubi: wl: Close down wear-leveling before nand is suspended"
  ubifs: ubifs_dump_leb: remove return from end of void function
  ubifs: dump_lpt_leb: remove return at end of void function
  ubi: Add a check for ubi_num
This commit is contained in:
Linus Torvalds
2025-01-30 18:27:02 -08:00
7 changed files with 117 additions and 35 deletions
+33
View File
@@ -175,6 +175,8 @@
#define UBI_IOCRPEB _IOW(UBI_IOC_MAGIC, 4, __s32)
/* Force scrubbing on the specified PEB */
#define UBI_IOCSPEB _IOW(UBI_IOC_MAGIC, 5, __s32)
/* Read detailed device erase counter information */
#define UBI_IOCECNFO _IOWR(UBI_IOC_MAGIC, 6, struct ubi_ecinfo_req)
/* ioctl commands of the UBI control character device */
@@ -412,6 +414,37 @@ struct ubi_rnvol_req {
} ents[UBI_MAX_RNVOL];
} __packed;
/**
* struct ubi_ecinfo_req - a data structure used for requesting and receiving
* erase block counter information from a UBI device.
*
* @start: index of first physical erase block to read (in)
* @length: number of erase counters to read (in)
* @read_length: number of erase counters that was actually read (out)
* @padding: reserved for future, not used, has to be zeroed
* @erase_counters: array of erase counter values (out)
*
* This structure is used to retrieve erase counter information for a specified
* range of PEBs on a UBI device.
* Erase counters are read from @start and attempts to read @length number of
* erase counters.
* The retrieved values are stored in the @erase_counters array. It is the
* responsibility of the caller to allocate enough memory for storing @length
* elements in the @erase_counters array.
* If a block is bad or if the erase counter is unknown the corresponding value
* in the array will be set to -1.
* The @read_length field will indicate the number of erase counters actually
* read. Typically @read_length will be limited due to memory or the number of
* PEBs on the UBI device.
*/
struct ubi_ecinfo_req {
__s32 start;
__s32 length;
__s32 read_length;
__s8 padding[16];
__s32 erase_counters[];
} __packed;
/**
* struct ubi_leb_change_req - a data structure used in atomic LEB change
* requests.