pay attention to a few things:
1 - your code must follow the coding style rules
- 2 - the format of the submission must be Github pull requests
+ 2 - the format of the submission must be GitHub pull requests
3 - your work must be signed
Submitting Modifications:
-------------------------
-The contributions must be Github pull requests.
+The contributions must be GitHub pull requests.
Licensing for new files:
------------------------
Language bindings for the libraries need to be released under LGPLv2.1+.
-Anything else (non-libaries) needs to be Free Software and needs to be
+Anything else (non-libraries) needs to be Free Software and needs to be
allowed to link with LGPLv2.1+ code (if needed). LXC upstream prefers
LGPLv2.1+ or GPLv2 for those.
If you want to become more active it is usually also a good idea to show up in
the LXC IRC channel `#lxc-dev` on `Freenode`. We try to do all development out
in the open and discussion of new features or bugs is done either in
-appropriate Github issues or on IRC.
+appropriate GitHub issues or on IRC.
When thinking about making security critical contributions or substantial
changes it is usually a good idea to ping the developers first and ask whether
# The stop is serialized and can take excessive time. We need to avoid
# delaying the system shutdown / reboot as much as we can since it's not
- # parallelized... Even 5 second timout may be too long.
+ # parallelized... Even 5 second timeout may be too long.
"$bindir"/lxc-autostart $STOPOPTS $SHUTDOWNDELAY
;;
# The stop is serialized and can take excessive time. We need to avoid
# delaying the system shutdown / reboot as much as we can since it's not
-# parallelized... Even 5 second timout may be too long.
+# parallelized... Even 5 second timeout may be too long.
post-stop script
[ -f /etc/default/lxc ] && . /etc/default/lxc
This adds `reboot2()` as a new API extension. This function properly waits
until a reboot succeeded. It takes a timeout argument. When set to `> 0`
`reboot2()` will block until the timeout is reached, if timeout is set to zero
-`reboot2()` will not block, if set to -1 `reboot2()` will block indefinitly.
+`reboot2()` will not block, if set to -1 `reboot2()` will block indefinitely.
## mount\_injection
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C.
FORMULA_TRANSPARENT = YES
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
+# http://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using prerendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
+# implemented using a web server instead of a web client using JavaScript. There
# are two flavours of web server based searching depending on the
# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# Container with new network withtout network devices
+# Container with new network without network devices
lxc.uts.name = omega
lxc.net.0.type = empty
lxc.net.0.flags = up
<citerefentry>
<refentrytitle><filename>lxc.conf</filename></refentrytitle>
<manvolnum>5</manvolnum>
- </citerefentry>. By default, the current archictecture of the
+ </citerefentry>. By default, the current architecture of the
running container will be used.
-->
コマンドを実行するコンテナのアーキテクチャを指定します。
<para><!-- Specify the backing storage type to be used for the copy
where 'backingstorage' is of type 'btrfs', 'dir', 'lvm', 'loop',
'overlay', or 'zfs'. -->
- コピー先コンテナのバッキングストレージのタイプを指定します。ここで 'backingsotrage' は 'btrfs'、'dir'、'lvm'、'loop'、'overlay'、'zfs' のどれかです。
+ コピー先コンテナのバッキングストレージのタイプを指定します。ここで 'backingstorage' は 'btrfs'、'dir'、'lvm'、'loop'、'overlay'、'zfs' のどれかです。
</para>
</listitem>
</varlistentry>
<!--
The uid map to use in the user namespace. Each map consists of
four colon-separate values. First a character 'u', 'g' or 'b' to
- specify whether this map perttains to user ids, group ids, or
+ specify whether this map pertains to user ids, group ids, or
both; next the first userid in the user namespace; next the
first userid as seen on the host; and finally the number of
ids to be mapped.
<variablelist>
<varlistentry>
<term>
- <option>lxc.cgroup.[controll name]</option>
+ <option>lxc.cgroup.[control name]</option>
</term>
<listitem>
<para>
<para>
<!--
Specify the control group value to be set on the unified cgroup
- shierarchy. The controller name is the literal name of the control
+ hierarchy. The controller name is the literal name of the control
group. The permitted names and the syntax of their values is not
dictated by LXC, instead it depends on the features of the Linux
kernel running at the time the container is started, eg.
container should be run can be specified in the container
configuration. The default is <command>lxc-container-default-cgns</command>
if the host kernel is cgroup namespace aware, or
- <command>lxc-container-default</command> othewise.
+ <command>lxc-container-default</command> otherwise.
-->
lxc が apparmor サポートでコンパイルされ、インストールされている場合で、ホストで apparmor が有効な場合、コンテナが従って動くべき apparmor プロファイルは、コンテナの設定で指定することが可能です。
デフォルトは、ホストのカーネルで cgroup 名前空間が使える場合は <command>lxc-container-default-cgns</command>です。使えない場合は <command>lxc-container-default</command> です。
Versions 1 and 2 are currently supported. In version 1, the
policy is a simple whitelist. The second line therefore must
read "whitelist", with the rest of the file containing one (numeric)
- sycall number per line. Each syscall number is whitelisted,
+ syscall number per line. Each syscall number is whitelisted,
while every unlisted number is blacklisted for use in the container
-->
現時点では、バージョン番号は 1 と 2 をサポートしています。バージョン 1 では、ポリシーはシンプルなホワイトリストですので、2 行目は "whitelist" でなければなりません。
<citerefentry>
<refentrytitle><filename>lxc.conf</filename></refentrytitle>
<manvolnum>5</manvolnum>
- </citerefentry>. By default, the current archictecture of the
+ </citerefentry>. By default, the current architecture of the
running container will be used.
-->
명령어를 실행하는 컨테이너의 아키텍처를 지정한다.
container. aufs or overlayfs snapshots of directory backed containers are
exempted from this rule.
-->
- 복사본의 저장소는 원본 컨테이너와 같은 종류가 된다. 단, aufs나 디렉토리로 구성된 컨테이너의 overayfs 스냅샷은 예외이다.
+ 복사본의 저장소는 원본 컨테이너와 같은 종류가 된다. 단, aufs나 디렉토리로 구성된 컨테이너의 overlayfs 스냅샷은 예외이다.
</para>
<para>
<!--
The uid map to use in the user namespace. Each map consists of
four colon-separate values. First a character 'u', 'g' or 'b' to
- specify whether this map perttains to user ids, group ids, or
+ specify whether this map pertains to user ids, group ids, or
both; next the first userid in the user namespace; next the
first userid as seen on the host; and finally the number of
ids to be mapped.
<listitem>
<para>
<!--
- UID to use within a private user namesapce for init.
+ UID to use within a private user namespace for init.
-->
init이 사용자 네임스페이스 안에서 사용할 UID.
</para>
<listitem>
<para>
<!--
- GID to use within a private user namesapce for init.
+ GID to use within a private user namespace for init.
-->
init이 사용자 네임스페이스 안에서 사용할 GID.
</para>
container should be run can be specified in the container
configuration. The default is <command>lxc-container-default-cgns</command>
if the host kernel is cgroup namespace aware, or
- <command>lxc-container-default</command> othewise.
+ <command>lxc-container-default</command> otherwise.
-->
lxc가 apparmor를 지원하도록 컴파일된 후 설치되었고, 호스트 시스템에서 apparmor가 활성화되었다면, 컨테이너에서 따라야할 apparmor 프로파일을 컨테이너 설정에서 지정할 수 있다. 기본값은 호스트 커널이 cgroup 네임스페이스를 지원하면 <command>lxc-container-default-cgns</command>이고, 그렇지 않다면 <command>lxc-container-default</command>이다.
</para>
Versions 1 and 2 are currently supported. In version 1, the
policy is a simple whitelist. The second line therefore must
read "whitelist", with the rest of the file containing one (numeric)
- sycall number per line. Each syscall number is whitelisted,
+ syscall number per line. Each syscall number is whitelisted,
while every unlisted number is blacklisted for use in the container
-->
현재는 버전1과 2만 지원된다. 버전 1에서는 정책은 단순한 화이트리스트이다. 그러므로 두번째 라인은 반드시 "whitelist"여야 한다. 파일의 나머지 내용은 한 줄에 하나의 시스템콜 번호로 채워진다. 화이트리스트에 없는 번호는 컨테이너에서 블랙리스트로 들어간다.
manage a container with simple command lines and complete enough
to be used for other purposes.
-->
- 이 프로젝트의 첫번째 목적은 컨테이너 프로젝트에 속해있는 커널 개발자들의 작업을 편하게 하며, 특히 새로운 기능인 Checkpoing/Restart에 대해 계속 작업을 진행해 나가는 것이다.
+ 이 프로젝트의 첫번째 목적은 컨테이너 프로젝트에 속해있는 커널 개발자들의 작업을 편하게 하며, 특히 새로운 기능인 Checkpoint/Restart에 대해 계속 작업을 진행해 나가는 것이다.
<command>lxc</command>는 작지만, 컨테이너를 간단한 명령어를 통해 쉽게 관리할 수 있고, 다목적으로 사용되기에도 충분하다.
</para>
</refsect1>
<citerefentry>
<refentrytitle><filename>lxc.conf</filename></refentrytitle>
<manvolnum>5</manvolnum>
- </citerefentry>. By default, the current archictecture of the
+ </citerefentry>. By default, the current architecture of the
running container will be used.
</para>
</listitem>
<listitem>
<para>
Specify the control group value to be set on the unified cgroup
- shierarchy. The controller name is the literal name of the control
+ hierarchy. The controller name is the literal name of the control
group. The permitted names and the syntax of their values is not
dictated by LXC, instead it depends on the features of the Linux
kernel running at the time the container is started, eg.
container should be run can be specified in the container
configuration. The default is <command>lxc-container-default-cgns</command>
if the host kernel is cgroup namespace aware, or
- <command>lxc-container-default</command> othewise.
+ <command>lxc-container-default</command> otherwise.
</para>
<variablelist>
<varlistentry>
Versions 1 and 2 are currently supported. In version 1, the
policy is a simple whitelist. The second line therefore must
read "whitelist", with the rest of the file containing one (numeric)
- sycall number per line. Each syscall number is whitelisted,
+ syscall number per line. Each syscall number is whitelisted,
while every unlisted number is blacklisted for use in the container
</para>
# Resolve every paths against the $ROOTFS environment variable.
# 'ip' just looks too weird. Also, we now have unit-tests! Those unit-tests
-# overwirte this line to use a fake ip-echo tool. It's also convenient
+# override this line to use a fake ip-echo tool. It's also convenient
# if your system holds ip tool in a non-standard location.
ip=/sbin/ip
# container as normal.
# a. echo none | ecryptfs-add-passphrase
# b. lxc-start -n q1
-# Note that you may well want to use a wrapped passhrase (see the ecryptfs-wrap-passphrase(1) manual page).
+# Note that you may well want to use a wrapped passphrase (see the ecryptfs-wrap-passphrase(1) manual page).
set -e
ecryptfs_crypt=$(echo $LXC_ROOTFS_PATH | sed 's/rootfs$/rootfs.crypt/')
* just fork()s away without exec'ing directly after, the socket fd will
* exist in the forked process from the other thread and any close() in
* our own child process will not really cause the socket to close
- * properly, potentiall causing the parent to hang.
+ * properly, potentially causing the parent to hang.
*
* For this reason, while IPC is still active, we have to use shutdown()
* if the child exits prematurely in order to signal that the socket is
*
* This new implementation assumes that cgroup filesystems are mounted
* under /sys/fs/cgroup/clist where clist is either the controller, or
- * a comman-separated list of controllers.
+ * a comma-separated list of controllers.
*/
#ifndef _GNU_SOURCE
/* After $rootfs/sys/fs/container/controller/the/cg/path has been created,
* remount controller ro if needed and bindmount the cgroupfs onto
- * controll/the/cg/path.
+ * control/the/cg/path.
*/
static int cg_legacy_mount_controllers(int type, struct hierarchy *h,
char *controllerpath, char *cgpath,
}
if (quit == LXC_MAINLOOP_CLOSE) {
- NOTICE("Got quit command. lxc-monitord is exitting");
+ NOTICE("Got quit command. lxc-monitord is exiting");
break;
}
}
_exit(EXIT_FAILURE);
}
- /* Write names of veth pairs and their ifindeces to stout:
+ /* Write names of veth pairs and their ifindices to stout:
* (e.g. eth0:731:veth9MT2L4:730)
*/
fprintf(stdout, "%s:%d:%s:%d\n", newname, container_veth_ifidx, nicname,
return 0;
}
-/* Implentations of the commands and their callbacks */
+/* Implementations of the commands and their callbacks */
/*
* lxc_cmd_get_init_pid: Get pid of the container's init process
return -1;
}
- /* The following code cleans up inhereted mounts which are not required
+ /* The following code cleans up inherited mounts which are not required
* for CT.
*
* The mountinfo file shows not all mounts, if a few points have been
* unmounted between read operations from the mountinfo. So we need to
* read mountinfo a few times.
*
- * This loop can be skipped if a container uses unserns, because all
+ * This loop can be skipped if a container uses userns, because all
* inherited mounts are locked and we should live with all this trash.
*/
for (;;) {
break;
}
- /* This also can be skipped if a container uses unserns. */
+ /* This also can be skipped if a container uses userns. */
(void)umount2("./proc", MNT_DETACH);
/* It is weird, but chdir("..") moves us in a new root */
* of the doubt. Otherwise we might fail even though all the necessary
* file capabilities are set.
*/
- DEBUG("Cannot check for file capabilites as full capability support is "
+ DEBUG("Cannot check for file capabilities as full capability support is "
"missing. Manual intervention needed");
fret = 1;
#endif
if (!had_entry)
continue;
- /* Try to catch the ouput of new{g,u}idmap to make debugging
+ /* Try to catch the output of new{g,u}idmap to make debugging
* easier.
*/
if (use_shadow) {
* This means we require only to establish a mapping from:
* - the container root {g,u}id as seen from the host > user's host {g,u}id
* - the container root -> some sub{g,u}id
- * The former we add, if the user did not specifiy a mapping. The latter we
- * retrieve from the ontainer's configured {g,u}id mappings as it must have been
+ * The former we add, if the user did not specify a mapping. The latter we
+ * retrieve from the container's configured {g,u}id mappings as it must have been
* there to start the container in the first place.
*/
int userns_exec_1(struct lxc_conf *conf, int (*fn)(void *), void *data,
* @bev_type : optional backing store type
* @options : mount options
* @mountflags : the portion of @options that are flags
- * @data : the porition of @options that are not flags
+ * @data : the portion of @options that are not flags
* @managed : whether it is managed by LXC
*/
struct lxc_rootfs {
int stopsignal; /* signal used to hard stop container */
char *rcfile; /* Copy of the top level rcfile we read */
- /* Logfile and logleve can be set in a container config file. Those
- * function as defaults. The defaults can be overriden by command line.
+ /* Logfile and loglevel can be set in a container config file. Those
+ * function as defaults. The defaults can be overridden by command line.
* However we don't want the command line specified values to be saved
* on c->save_config(). So we store the config file specified values
* here. */
- char *logfile; /* the logfile as specifed in config */
- int loglevel; /* loglevel as specifed in config (if any) */
+ char *logfile; /* the logfile as specified in config */
+ int loglevel; /* loglevel as specified in config (if any) */
int logfd;
unsigned int start_auto;
/* If you ask for a specific cgroup value, i.e. lxc.cgroup.devices.list, then
* just the value(s) will be printed. Since there still could be more than one,
* it is newline-separated.
- * (Maybe that's ambigous, since some values, i.e. devices.list, will already
+ * (Maybe that's ambiguous, since some values, i.e. devices.list, will already
* have newlines?)
* If you ask for 'lxc.cgroup", then all cgroup entries will be printed, in
* 'lxc.cgroup.subsystem.key = value' format.
ret = lxc_safe_uint((idx_start + 1), &tmpidx);
if (ret < 0) {
errno = -ret;
- SYSERROR("Failed to parse usigned integer from string \"%s\"",
+ SYSERROR("Failed to parse unsigned integer from string \"%s\"",
idx_start + 1);
*idx = ret;
goto on_error;
retlen = strlcpy(valuep, value, size);
if (retlen >= size)
- ERROR("Network devie name \"%s\" is too long (>= %zu)", value,
+ ERROR("Network device name \"%s\" is too long (>= %zu)", value,
size);
return 0;
ret = snprintf(path, sizeof(path), "%s/tty.info", directory);
if (ret < 0 || ret >= sizeof(path)) {
- ERROR("snprintf'd too many chacters: %d", ret);
+ ERROR("snprintf'd too many characters: %d", ret);
return -1;
}
struct cgroup_ops *cgroup_ops;
/* Try to detach from the current controlling tty if it exists.
- * Othwerise, lxc_init (via lxc_console) will attach the container's
+ * Otherwise, lxc_init (via lxc_console) will attach the container's
* console output to the current tty, which is probably not what any
* library user wants, and if they do, they can just manually configure
* it :)
ret = snprintf(path, sizeof(path), "/proc/%d/root/dev/console", c->init_pid(c));
if (ret < 0 || ret >= sizeof(path)) {
- ERROR("snprintf'd too many chacters: %d", ret);
+ ERROR("snprintf'd too many characters: %d", ret);
return -1;
}
for (__iterator = (__list)->next, __next = __iterator->next; \
__iterator != __list; __iterator = __next, __next = __next->next)
-/* Initalize list. */
+/* Initialize list. */
static inline void lxc_list_init(struct lxc_list *list)
{
list->elem = NULL;
/* Transform hours to seconds. */
h_in_s = hours * 3600;
- /* Calculate minutes by substracting the seconds for all days in the
+ /* Calculate minutes by subtracting the seconds for all days in the
* epoch and for all hours in the epoch and divide by the number of
* minutes in an hour.
*/
minutes = (time->tv_sec - d_in_s - h_in_s) / 60;
- /* Calculate the seconds by substracting the seconds for all days in the
+ /* Calculate the seconds by subtracting the seconds for all days in the
* epoch, hours in the epoch and minutes in the epoch.
*/
seconds = (time->tv_sec - d_in_s - h_in_s - (minutes * 60));
* think you are, you __will__ cause trouble using them.
* (As a short example how this can cause trouble: LXD uses forkstart to fork
* off a new process that runs the container. At the same time the go runtime
- * LXD relies on does its own multi-threading thing which we can't controll. The
+ * LXD relies on does its own multi-threading thing which we can't control. The
* fork()ing + threading then seems to mess with the locking states in these
* time functions causing deadlocks.)
* The current solution is to be good old unix people and use the Epoch as our
/*
* lxc_log_init:
* Called from lxc front-end programs (like lxc-create, lxc-start) to
- * initalize the log defaults.
+ * initialize the log defaults.
*/
int lxc_log_init(struct lxc_log *log)
{
/*
* Start the specified command inside a system container
* @name : the name of the container
- * @argv : an array of char * corresponding to the commande line
+ * @argv : an array of char * corresponding to the command line
* @conf : configuration
* @daemonize : whether or not the container is daemonized
* Returns 0 on success, < 0 otherwise
/*
* Start the specified command inside an application container
* @name : the name of the container
- * @argv : an array of char * corresponding to the commande line
+ * @argv : an array of char * corresponding to the command line
* @quiet : if != 0 then lxc-init won't produce any output
* @conf : configuration
* @daemonize : whether or not the container is daemonized
if (!newnames[pos])
return false;
- /* Sort the arrray as we will use binary search on it. */
+ /* Sort the array as we will use binary search on it. */
qsort(newnames, pos + 1, sizeof(char *),
(int (*)(const void *, const void *))string_cmp);
*list = newlist;
newlist[pos] = c;
- /* Sort the arrray as we will use binary search on it. */
+ /* Sort the array as we will use binary search on it. */
if (sort)
qsort(newlist, pos + 1, sizeof(struct lxc_container *),
(int (*)(const void *, const void *))container_cmp);
bool (*destroy)(struct lxc_container *c);
/*!
- * \brief Save configuaration to a file.
+ * \brief Save configuration to a file.
*
* \param c Container.
* \param alt_file Full path to file to save configuration in.
/*!
* \brief An API call to perform various migration operations
*
- * \param cmd One of the MIGRATE_ contstants.
+ * \param cmd One of the MIGRATE_ constants.
* \param opts A migrate_opts struct filled with relevant options.
* \param size The size of the migrate_opts struct, i.e. sizeof(struct migrate_opts).
*
/*
* Blocking read from multiple monitors for the next container state
* change with timeout
- * @fds : struct pollfd descripting the fds to use
+ * @fds : struct pollfd describing the fds to use
* @nfds : the number of entries in fds
* @msg : the variable which will be filled with the state
* @timeout : the timeout in seconds to wait for a state change
netdev->link);
clear_ifindices:
- /* We need to clear any ifindeces we recorded so liblxc won't
+ /* We need to clear any ifindices we recorded so liblxc won't
* have cached stale data which would cause it to fail on reboot
* we're we don't re-read the on-disk config file.
*/
hostveth, netdev->link);
clear_ifindices:
- /* We need to clear any ifindeces we recorded so liblxc won't
+ /* We need to clear any ifindices we recorded so liblxc won't
* have cached stale data which would cause it to fail on reboot
* we're we don't re-read the on-disk config file.
*/
return -1;
}
- TRACE("Sent network device names and ifindeces to parent");
+ TRACE("Sent network device names and ifindices to parent");
return 0;
}
* Returns 0 on success, < 0 otherwise
*/
int netlink_transaction(struct nl_handler *handler,
- struct nlmsg *request, struct nlmsg *anwser);
+ struct nlmsg *request, struct nlmsg *answer);
int __netlink_transaction(struct nl_handler *handler, struct nlmsghdr *request,
- struct nlmsghdr *anwser);
+ struct nlmsghdr *answer);
/*
* nla_put_string: copy a null terminated string to a netlink message
}
/* Detect and store information about the cgroupfs v2 hierarchy. Currently only
- * deals with the empty v2 hierachy as we do not retrieve enabled controllers.
+ * deals with the empty v2 hierarchy as we do not retrieve enabled controllers.
*/
static bool cgv2_init(uid_t uid, gid_t gid)
{
pid_t lxc_raw_clone(unsigned long flags)
{
/*
- * These flags don't interest at all so we don't jump through any hoopes
+ * These flags don't interest at all so we don't jump through any hoops
* of retrieving them and passing them to the kernel.
*/
errno = EINVAL;
* getpid() in the child would return the parent's pid. This is all fixed in
* newer glibc versions where the getpid() cache is removed and the pid/tid is
* not reset anymore.
- * However, if for whatever reason you - dear commiter - somehow need to get the
+ * However, if for whatever reason you - dear committer - somehow need to get the
* pid of the dummy intermediate process for do_share_ns() you need to call
* lxc_raw_getpid(). The next lxc_raw_clone() call does not employ CLONE_VM and
* will be fine.
}
/* Now all networks are created, network devices are moved into place,
- * and the correct names and ifindeces in the respective namespaces have
+ * and the correct names and ifindices in the respective namespaces have
* been recorded. The corresponding structs have now all been filled. So
* log them for debugging purposes.
*/
/*
* A backref key with the name and dirid of the parent
- * comes followed by the reoot ref key which has the
+ * comes followed by the root ref key which has the
* name of the child subvol in question.
*/
if (sh.objectid != root_id && sh.type == BTRFS_ROOT_BACKREF_KEY) {
return ret;
}
-/* If we're not snaphotting, then storage_copy becomes a simple case of mount
+/* If we're not snapshotting, then storage_copy becomes a simple case of mount
* the original, mount the new, and rsync the contents.
*/
struct lxc_storage *storage_copy(struct lxc_container *c, const char *cname,
/* Return copy of string @entry. Do not fail. */
extern char *must_copy_string(const char *entry);
-/* Re-alllocate a pointer, do not fail */
+/* Re-allocate a pointer, do not fail */
extern void *must_realloc(void *orig, size_t sz);
extern int lxc_char_left_gc(const char *buffer, size_t len);
* Must be called with process_lock held to protect the lxc_ttys list, or from
* a non-threaded context.
*
- * Note that the signal handler isn't installed as a classic asychronous
+ * Note that the signal handler isn't installed as a classic asynchronous
* handler, rather signalfd(2) is used so that we can handle the signal when
* we're ready for it. This avoids deadlocks since a signal handler (ie
* lxc_terminal_sigwinch()) would need to take the thread mutex to prevent
}
}
- /* We have a candidate continer to process */
+ /* We have a candidate container to process */
c->want_daemonize(c, 1);
if (my_args.shutdown) {
-t, --tmpfs place ephemeral container on a tmpfs\n\
(WARNING: On reboot all changes made to the container will be lost.)\n\
-L, --fssize size of the new block device for block device containers\n\
- -D, --keedata pass together with -e start a persistent snapshot \n\
+ -D, --keepdata pass together with -e start a persistent snapshot \n\
-K, --keepname keep the hostname of the original container\n\
-- hook options arguments passed to the hook program\n\
-M, --keepmac keep the MAC address of the original container\n\
if (!l->name)
goto put_and_next;
- /* Do not record stuff the user did not explictly request. */
+ /* Do not record stuff the user did not explicitly request. */
if (args->ls_fancy) {
/* Maybe we should even consider the name sensitive and
* hide it when you're not allowed to control the
exit(EXIT_FAILURE);
}
- /* Call exit() directly on this function because it retuns an exit code. */
+ /* Call exit() directly on this function because it returns an exit code. */
exit(EXIT_SUCCESS);
}
return true;
}
-/* Simple covenience function which enables uniform logging. */
+/* Simple convenience function which enables uniform logging. */
bool lxc_setgroups(int size, gid_t list[])
{
if (setgroups(size, list) < 0) {
/* return copy of string @entry; do not fail. */
extern char *must_copy_string(const char *entry);
-/* Re-alllocate a pointer, do not fail */
+/* Re-allocate a pointer, do not fail */
extern void *must_realloc(void *orig, size_t sz);
extern bool lxc_nic_exists(char *nic);
/*
* try opening a file attached to a container. Return 0 on open fail. Return
- * 1 if the file open succeeded. Return -1 if attach itself failed - perhas an
+ * 1 if the file open succeeded. Return -1 if attach itself failed - perhaps an
* older kernel.
*/
static int do_test_file_open(struct lxc_container *c, char *fnam)
goto on_error_put;
}
- /* do the actual fature check for memory tracking */
+ /* do the actual feature check for memory tracking */
m_opts.features_to_check = FEATURE_MEM_TRACK;
if (c->migrate(c, MIGRATE_FEATURE_CHECK, &m_opts, sizeof(struct migrate_opts))) {
lxc_debug("%s\n", "System does not support \"FEATURE_MEM_TRACK\".");
# This would be much simpler if we could run it as
# root. However, in order to not have the bind mount
-# of an empty directory over the securitfs 'mount' directory
+# of an empty directory over the securityfs 'mount' directory
# be removed, we need to do this as non-root.
which newuidmap >/dev/null 2>&1 || { echo "'newuidmap' command is missing" >&2; exit 1; }
/* Test whether we can start a really short-lived daemonized container with lxc-init. */
for (i = 0; i < 10; i++) {
/* An container started with lxc-init will always start
- * succesfully unless lxc-init has a bug.
+ * successfully unless lxc-init has a bug.
*/
if (!c->startl(c, 1, NULL)) {
fprintf(stderr, "%d: %s failed to start on %dth iteration\n", __LINE__, c->name, i);
sprintf(buf, "0");
b = c->set_cgroup_item(c, "cpuset.cpus", buf);
if (b) {
- fprintf(stderr, "%d: %s not running but coudl set cgroup settings\n", __LINE__, MYNAME);
+ fprintf(stderr, "%d: %s not running but could set cgroup settings\n", __LINE__, MYNAME);
goto out;
}