summaryrefslogtreecommitdiffstats
path: root/meta-filesystems/recipes-utils
diff options
context:
space:
mode:
authorYevhen Kyriukha <kirgene@gmail.com>2015-04-27 22:41:36 +0300
committerMartin Jansa <Martin.Jansa@gmail.com>2015-05-11 10:25:53 +0200
commit79167895ce1640cd2ca1414de4c418a03c55f29d (patch)
tree204ec414baa14bd99020934bb4ed714981fa6a77 /meta-filesystems/recipes-utils
parentafb00a1179f884286b6ac3a289a59a2020f8c1d6 (diff)
downloadmeta-openembedded-79167895ce1640cd2ca1414de4c418a03c55f29d.tar.gz
aufs-util: upgrade to v3.14.
Signed-off-by: Yevhen Kyriukha <kirgene@gmail.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'meta-filesystems/recipes-utils')
-rw-r--r--meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch4
-rw-r--r--meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h239
-rw-r--r--meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb6
3 files changed, 229 insertions, 20 deletions
diff --git a/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
index 48727e6e2..fe2a6a576 100644
--- a/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
+++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
@@ -27,8 +27,8 @@ index 2f905ad..e0c6dcd 100644
27 ver_test: ver 27 ver_test: ver
28 ./ver 28 ./ver
29 29
30-${Bin}: LDFLAGS += -static -s 30-${Bin}: override LDFLAGS += -static -s
31+${Bin}: LDFLAGS += -static 31+${Bin}: override LDFLAGS += -static
32 ${Bin}: LDLIBS = -L. -lautil 32 ${Bin}: LDLIBS = -L. -lautil
33 ${BinObj}: %.o: %.c ${LibUtilHdr} ${LibUtil} 33 ${BinObj}: %.o: %.c ${LibUtilHdr} ${LibUtil}
34 34
diff --git a/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h
index cb439baa4..c948033a4 100644
--- a/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h
+++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2005-2013 Junjiro R. Okajima 2 * Copyright (C) 2005-2015 Junjiro R. Okajima
3 * 3 *
4 * This program, aufs is free software; you can redistribute it and/or modify 4 * This program, aufs is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by 5 * it under the terms of the GNU General Public License as published by
@@ -12,8 +12,7 @@
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software 15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */ 16 */
18 17
19#ifndef __AUFS_TYPE_H__ 18#ifndef __AUFS_TYPE_H__
@@ -21,12 +20,26 @@
21 20
22#define AUFS_NAME "aufs" 21#define AUFS_NAME "aufs"
23 22
23#ifdef __KERNEL__
24/*
25 * define it before including all other headers.
26 * sched.h may use pr_* macros before defining "current", so define the
27 * no-current version first, and re-define later.
28 */
29#define pr_fmt(fmt) AUFS_NAME " %s:%d: " fmt, __func__, __LINE__
30#include <linux/sched.h>
31#undef pr_fmt
32#define pr_fmt(fmt) \
33 AUFS_NAME " %s:%d:%.*s[%d]: " fmt, __func__, __LINE__, \
34 (int)sizeof(current->comm), current->comm, current->pid
35#else
24#include <stdint.h> 36#include <stdint.h>
25#include <sys/types.h> 37#include <sys/types.h>
38#endif /* __KERNEL__ */
26 39
27#include <linux/limits.h> 40#include <linux/limits.h>
28 41
29#define AUFS_VERSION "3.8-20130325" 42#define AUFS_VERSION "3.18-20150406"
30 43
31/* todo? move this to linux-2.6.19/include/magic.h */ 44/* todo? move this to linux-2.6.19/include/magic.h */
32#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') 45#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
@@ -47,6 +60,11 @@ typedef int16_t aufs_bindex_t;
47#endif 60#endif
48#endif 61#endif
49 62
63#ifdef __KERNEL__
64#ifndef AUFS_BRANCH_MAX
65#error unknown CONFIG_AUFS_BRANCH_MAX value
66#endif
67#endif /* __KERNEL__ */
50 68
51/* ---------------------------------------------------------------------- */ 69/* ---------------------------------------------------------------------- */
52 70
@@ -58,15 +76,15 @@ typedef int16_t aufs_bindex_t;
58#define AUFS_WH_PFX ".wh." 76#define AUFS_WH_PFX ".wh."
59#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) 77#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1)
60#define AUFS_WH_TMP_LEN 4 78#define AUFS_WH_TMP_LEN 4
61/* a limit for rmdir/rename a dir */ 79/* a limit for rmdir/rename a dir and copyup */
62#define AUFS_MAX_NAMELEN (NAME_MAX \ 80#define AUFS_MAX_NAMELEN (NAME_MAX \
63 - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ 81 - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\
64 - 1 /* dot */\ 82 - 1 /* dot */\
65 - AUFS_WH_TMP_LEN) /* hex */ 83 - AUFS_WH_TMP_LEN) /* hex */
66#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" 84#define AUFS_XINO_FNAME "." AUFS_NAME ".xino"
67#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME 85#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME
68#define AUFS_XINO_TRUNC_INIT 64 /* blocks */ 86#define AUFS_XINO_DEF_SEC 30 /* seconds */
69#define AUFS_XINO_TRUNC_STEP 4 /* blocks */ 87#define AUFS_XINO_DEF_TRUNC 45 /* percentage */
70#define AUFS_DIRWH_DEF 3 88#define AUFS_DIRWH_DEF 3
71#define AUFS_RDCACHE_DEF 10 /* seconds */ 89#define AUFS_RDCACHE_DEF 10 /* seconds */
72#define AUFS_RDCACHE_MAX 3600 /* seconds */ 90#define AUFS_RDCACHE_MAX 3600 /* seconds */
@@ -75,7 +93,8 @@ typedef int16_t aufs_bindex_t;
75#define AUFS_WKQ_NAME AUFS_NAME "d" 93#define AUFS_WKQ_NAME AUFS_NAME "d"
76#define AUFS_MFS_DEF_SEC 30 /* seconds */ 94#define AUFS_MFS_DEF_SEC 30 /* seconds */
77#define AUFS_MFS_MAX_SEC 3600 /* seconds */ 95#define AUFS_MFS_MAX_SEC 3600 /* seconds */
78#define AUFS_PLINK_WARN 100 /* number of plinks */ 96#define AUFS_FHSM_CACHE_DEF_SEC 30 /* seconds */
97#define AUFS_PLINK_WARN 50 /* number of plinks in a single bucket */
79 98
80/* pseudo-link maintenace under /proc */ 99/* pseudo-link maintenace under /proc */
81#define AUFS_PLINK_MAINT_NAME "plink_maint" 100#define AUFS_PLINK_MAINT_NAME "plink_maint"
@@ -98,8 +117,117 @@ typedef int16_t aufs_bindex_t;
98#define AUFS_BRPERM_RW "rw" 117#define AUFS_BRPERM_RW "rw"
99#define AUFS_BRPERM_RO "ro" 118#define AUFS_BRPERM_RO "ro"
100#define AUFS_BRPERM_RR "rr" 119#define AUFS_BRPERM_RR "rr"
120#define AUFS_BRATTR_COO_REG "coo_reg"
121#define AUFS_BRATTR_COO_ALL "coo_all"
122#define AUFS_BRATTR_FHSM "fhsm"
123#define AUFS_BRATTR_UNPIN "unpin"
124#define AUFS_BRATTR_ICEX "icex"
125#define AUFS_BRATTR_ICEX_SEC "icexsec"
126#define AUFS_BRATTR_ICEX_SYS "icexsys"
127#define AUFS_BRATTR_ICEX_TR "icextr"
128#define AUFS_BRATTR_ICEX_USR "icexusr"
129#define AUFS_BRATTR_ICEX_OTH "icexoth"
101#define AUFS_BRRATTR_WH "wh" 130#define AUFS_BRRATTR_WH "wh"
102#define AUFS_BRWATTR_NLWH "nolwh" 131#define AUFS_BRWATTR_NLWH "nolwh"
132#define AUFS_BRWATTR_MOO "moo"
133
134#define AuBrPerm_RW 1 /* writable, hardlinkable wh */
135#define AuBrPerm_RO (1 << 1) /* readonly */
136#define AuBrPerm_RR (1 << 2) /* natively readonly */
137#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR)
138
139#define AuBrAttr_COO_REG (1 << 3) /* copy-up on open */
140#define AuBrAttr_COO_ALL (1 << 4)
141#define AuBrAttr_COO_Mask (AuBrAttr_COO_REG | AuBrAttr_COO_ALL)
142
143#define AuBrAttr_FHSM (1 << 5) /* file-based hsm */
144#define AuBrAttr_UNPIN (1 << 6) /* rename-able top dir of
145 branch. meaningless since
146 linux-3.18-rc1 */
147
148/* ignore error in copying XATTR */
149#define AuBrAttr_ICEX_SEC (1 << 7)
150#define AuBrAttr_ICEX_SYS (1 << 8)
151#define AuBrAttr_ICEX_TR (1 << 9)
152#define AuBrAttr_ICEX_USR (1 << 10)
153#define AuBrAttr_ICEX_OTH (1 << 11)
154#define AuBrAttr_ICEX (AuBrAttr_ICEX_SEC \
155 | AuBrAttr_ICEX_SYS \
156 | AuBrAttr_ICEX_TR \
157 | AuBrAttr_ICEX_USR \
158 | AuBrAttr_ICEX_OTH)
159
160#define AuBrRAttr_WH (1 << 12) /* whiteout-able */
161#define AuBrRAttr_Mask AuBrRAttr_WH
162
163#define AuBrWAttr_NoLinkWH (1 << 13) /* un-hardlinkable whiteouts */
164#define AuBrWAttr_MOO (1 << 14) /* move-up on open */
165#define AuBrWAttr_Mask (AuBrWAttr_NoLinkWH | AuBrWAttr_MOO)
166
167#define AuBrAttr_CMOO_Mask (AuBrAttr_COO_Mask | AuBrWAttr_MOO)
168
169/* #warning test userspace */
170#ifdef __KERNEL__
171#ifndef CONFIG_AUFS_FHSM
172#undef AuBrAttr_FHSM
173#define AuBrAttr_FHSM 0
174#endif
175#ifndef CONFIG_AUFS_XATTR
176#undef AuBrAttr_ICEX
177#define AuBrAttr_ICEX 0
178#undef AuBrAttr_ICEX_SEC
179#define AuBrAttr_ICEX_SEC 0
180#undef AuBrAttr_ICEX_SYS
181#define AuBrAttr_ICEX_SYS 0
182#undef AuBrAttr_ICEX_TR
183#define AuBrAttr_ICEX_TR 0
184#undef AuBrAttr_ICEX_USR
185#define AuBrAttr_ICEX_USR 0
186#undef AuBrAttr_ICEX_OTH
187#define AuBrAttr_ICEX_OTH 0
188#endif
189#endif
190
191/* the longest combination */
192/* AUFS_BRATTR_ICEX and AUFS_BRATTR_ICEX_TR don't affect here */
193#define AuBrPermStrSz sizeof(AUFS_BRPERM_RW \
194 "+" AUFS_BRATTR_COO_REG \
195 "+" AUFS_BRATTR_FHSM \
196 "+" AUFS_BRATTR_UNPIN \
197 "+" AUFS_BRATTR_ICEX_SEC \
198 "+" AUFS_BRATTR_ICEX_SYS \
199 "+" AUFS_BRATTR_ICEX_USR \
200 "+" AUFS_BRATTR_ICEX_OTH \
201 "+" AUFS_BRWATTR_NLWH)
202
203typedef struct {
204 char a[AuBrPermStrSz];
205} au_br_perm_str_t;
206
207static inline int au_br_writable(int brperm)
208{
209 return brperm & AuBrPerm_RW;
210}
211
212static inline int au_br_whable(int brperm)
213{
214 return brperm & (AuBrPerm_RW | AuBrRAttr_WH);
215}
216
217static inline int au_br_wh_linkable(int brperm)
218{
219 return !(brperm & AuBrWAttr_NoLinkWH);
220}
221
222static inline int au_br_cmoo(int brperm)
223{
224 return brperm & AuBrAttr_CMOO_Mask;
225}
226
227static inline int au_br_fhsm(int brperm)
228{
229 return brperm & AuBrAttr_FHSM;
230}
103 231
104/* ---------------------------------------------------------------------- */ 232/* ---------------------------------------------------------------------- */
105 233
@@ -109,11 +237,11 @@ enum {
109 AuCtl_RDU, 237 AuCtl_RDU,
110 AuCtl_RDU_INO, 238 AuCtl_RDU_INO,
111 239
112 /* pathconf wrapper */ 240 AuCtl_WBR_FD, /* pathconf wrapper */
113 AuCtl_WBR_FD, 241 AuCtl_IBUSY, /* busy inode */
114 242 AuCtl_MVDOWN, /* move-down */
115 /* busy inode */ 243 AuCtl_BR, /* info about branches */
116 AuCtl_IBUSY 244 AuCtl_FHSM_FD /* connection for fhsm */
117}; 245};
118 246
119/* borrowed from linux/include/linux/kernel.h */ 247/* borrowed from linux/include/linux/kernel.h */
@@ -127,6 +255,11 @@ enum {
127#define __aligned(x) __attribute__((aligned(x))) 255#define __aligned(x) __attribute__((aligned(x)))
128#endif 256#endif
129 257
258#ifdef __KERNEL__
259#ifndef __packed
260#define __packed __attribute__((packed))
261#endif
262#endif
130 263
131struct au_rdu_cookie { 264struct au_rdu_cookie {
132 uint64_t h_pos; 265 uint64_t h_pos;
@@ -145,7 +278,7 @@ struct au_rdu_ent {
145 char name[0]; 278 char name[0];
146} __aligned(8); 279} __aligned(8);
147 280
148static __inline__ int au_rdu_len(int nlen) 281static inline int au_rdu_len(int nlen)
149{ 282{
150 /* include the terminating NULL */ 283 /* include the terminating NULL */
151 return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, 284 return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1,
@@ -153,7 +286,7 @@ static __inline__ int au_rdu_len(int nlen)
153} 286}
154 287
155union au_rdu_ent_ul { 288union au_rdu_ent_ul {
156 struct au_rdu_ent *e; 289 struct au_rdu_ent *e;
157 uint64_t ul; 290 uint64_t ul;
158}; 291};
159 292
@@ -200,11 +333,87 @@ struct aufs_ibusy {
200 333
201/* ---------------------------------------------------------------------- */ 334/* ---------------------------------------------------------------------- */
202 335
336/* error code for move-down */
337/* the actual message strings are implemented in aufs-util.git */
338enum {
339 EAU_MVDOWN_OPAQUE = 1,
340 EAU_MVDOWN_WHITEOUT,
341 EAU_MVDOWN_UPPER,
342 EAU_MVDOWN_BOTTOM,
343 EAU_MVDOWN_NOUPPER,
344 EAU_MVDOWN_NOLOWERBR,
345 EAU_Last
346};
347
348/* flags for move-down */
349#define AUFS_MVDOWN_DMSG 1
350#define AUFS_MVDOWN_OWLOWER (1 << 1) /* overwrite lower */
351#define AUFS_MVDOWN_KUPPER (1 << 2) /* keep upper */
352#define AUFS_MVDOWN_ROLOWER (1 << 3) /* do even if lower is RO */
353#define AUFS_MVDOWN_ROLOWER_R (1 << 4) /* did on lower RO */
354#define AUFS_MVDOWN_ROUPPER (1 << 5) /* do even if upper is RO */
355#define AUFS_MVDOWN_ROUPPER_R (1 << 6) /* did on upper RO */
356#define AUFS_MVDOWN_BRID_UPPER (1 << 7) /* upper brid */
357#define AUFS_MVDOWN_BRID_LOWER (1 << 8) /* lower brid */
358#define AUFS_MVDOWN_FHSM_LOWER (1 << 9) /* find fhsm attr for lower */
359#define AUFS_MVDOWN_STFS (1 << 10) /* req. stfs */
360#define AUFS_MVDOWN_STFS_FAILED (1 << 11) /* output: stfs is unusable */
361#define AUFS_MVDOWN_BOTTOM (1 << 12) /* output: no more lowers */
362
363/* index for move-down */
364enum {
365 AUFS_MVDOWN_UPPER,
366 AUFS_MVDOWN_LOWER,
367 AUFS_MVDOWN_NARRAY
368};
369
370/*
371 * additional info of move-down
372 * number of free blocks and inodes.
373 * subset of struct kstatfs, but smaller and always 64bit.
374 */
375struct aufs_stfs {
376 uint64_t f_blocks;
377 uint64_t f_bavail;
378 uint64_t f_files;
379 uint64_t f_ffree;
380};
381
382struct aufs_stbr {
383 int16_t brid; /* optional input */
384 int16_t bindex; /* output */
385 struct aufs_stfs stfs; /* output when AUFS_MVDOWN_STFS set */
386} __aligned(8);
387
388struct aufs_mvdown {
389 uint32_t flags; /* input/output */
390 struct aufs_stbr stbr[AUFS_MVDOWN_NARRAY]; /* input/output */
391 int8_t au_errno; /* output */
392} __aligned(8);
393
394/* ---------------------------------------------------------------------- */
395
396union aufs_brinfo {
397 /* PATH_MAX may differ between kernel-space and user-space */
398 char _spacer[4096];
399 struct {
400 int16_t id;
401 int perm;
402 char path[0];
403 };
404} __aligned(8);
405
406/* ---------------------------------------------------------------------- */
407
203#define AuCtlType 'A' 408#define AuCtlType 'A'
204#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) 409#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu)
205#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) 410#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu)
206#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ 411#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \
207 struct aufs_wbr_fd) 412 struct aufs_wbr_fd)
208#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) 413#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy)
414#define AUFS_CTL_MVDOWN _IOWR(AuCtlType, AuCtl_MVDOWN, \
415 struct aufs_mvdown)
416#define AUFS_CTL_BRINFO _IOW(AuCtlType, AuCtl_BR, union aufs_brinfo)
417#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int)
209 418
210#endif /* __AUFS_TYPE_H__ */ 419#endif /* __AUFS_TYPE_H__ */
diff --git a/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb b/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
index db3cd5965..8980980ee 100644
--- a/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
+++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
@@ -7,14 +7,14 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
7DEPENDS = "aufs-util-native" 7DEPENDS = "aufs-util-native"
8DEPENDS_class-native = "" 8DEPENDS_class-native = ""
9 9
10SRCREV = "f29056fe396d56fc2a06a96312feabaebbe14c59" 10SRCREV = "b59a2167a135ceea37581ee33997de278cf8a30a"
11SRC_URI = "git://git.code.sf.net/p/aufs/aufs-util;protocol=git;branch=aufs3.0 \ 11SRC_URI = "git://git.code.sf.net/p/aufs/aufs-util;protocol=git;branch=aufs3.14 \
12 file://aufs-util-don-t-strip-executables.patch \ 12 file://aufs-util-don-t-strip-executables.patch \
13 file://aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch \ 13 file://aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch \
14 file://aufs_type.h \ 14 file://aufs_type.h \
15" 15"
16 16
17PV = "3.0+git${SRCPV}" 17PV = "3.14+git${SRCPV}"
18 18
19S = "${WORKDIR}/git" 19S = "${WORKDIR}/git"
20 20