mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-29 13:28:27 +00:00
util: Update kdev_to_odev to respect BITS_PER_LONG
Depending on BITS_PER_LONG userspace representation of dev_t may vary, so we need to choose proper encoding. Signed-off-by: Igor Sukhih <igor@parallels.com> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
59c43e481e
commit
647207714a
@ -220,9 +220,17 @@ static inline u32 kdev_minor(u32 kdev)
|
|||||||
static inline dev_t kdev_to_odev(u32 kdev)
|
static inline dev_t kdev_to_odev(u32 kdev)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* New kernels envcode devices in a new form
|
* New kernels encode devices in a new form.
|
||||||
|
* See kernel's fs/stat.c for details, there
|
||||||
|
* choose_32_64 helpers which are the key.
|
||||||
*/
|
*/
|
||||||
return (kdev_major(kdev) << 8) | kdev_minor(kdev);
|
unsigned major = kdev_major(kdev);
|
||||||
|
unsigned minor = kdev_minor(kdev);
|
||||||
|
#if BITS_PER_LONG == 32
|
||||||
|
return (major << 8) | minor;
|
||||||
|
#else
|
||||||
|
return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int copy_file(int fd_in, int fd_out, size_t bytes);
|
int copy_file(int fd_in, int fd_out, size_t bytes);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user