9
0
Fork 0

ubi: Add truncate callback

The size of static ubi volumes changes depending on the content.
Add truncate callback to handle resizes.

Signed-off-by: Teresa Remmet <t.remmet@phytec.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Teresa Remmet 2016-11-25 09:06:04 +01:00 committed by Sascha Hauer
parent a6785bae3b
commit 55513dcec5
1 changed files with 16 additions and 0 deletions

View File

@ -162,6 +162,21 @@ static loff_t ubi_volume_cdev_lseek(struct cdev *cdev, loff_t ofs)
return ofs;
}
static int ubi_volume_cdev_truncate(struct cdev *cdev, size_t size)
{
struct ubi_volume_cdev_priv *priv = cdev->priv;
struct ubi_device *ubi = priv->ubi;
struct ubi_volume *vol = priv->vol;
uint64_t rsvd_bytes;
rsvd_bytes = (long long)vol->reserved_pebs *
ubi->leb_size - vol->data_pad;
if (size > rsvd_bytes)
return -ENOSPC;
return 0;
}
static int ubi_volume_cdev_ioctl(struct cdev *cdev, int cmd, void *buf)
{
struct ubi_volume_cdev_priv *priv = cdev->priv;
@ -210,6 +225,7 @@ static struct file_operations ubi_volume_fops = {
.write = ubi_volume_cdev_write,
.lseek = ubi_volume_cdev_lseek,
.ioctl = ubi_volume_cdev_ioctl,
.truncate = ubi_volume_cdev_truncate,
};
int ubi_volume_cdev_add(struct ubi_device *ubi, struct ubi_volume *vol)