1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/* Copyright © 2005-2006 Roger Leigh <rleigh@debian.org>
*
* schroot is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* schroot is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*********************************************************************/
#ifndef SBUILD_CHROOT_BLOCK_DEVICE_H
#define SBUILD_CHROOT_BLOCK_DEVICE_H
#include <sbuild/sbuild-chroot.h>
namespace sbuild
{
/**
* A chroot stored on an unmounted block device.
*
* The device will be mounted on demand.
*/
class chroot_block_device : virtual public chroot
{
protected:
/// The constructor.
chroot_block_device ();
friend class chroot;
public:
/// The destructor.
virtual ~chroot_block_device ();
virtual chroot::ptr
clone () const;
/**
* Get the block device of the chroot.
*
* @returns the device.
*/
std::string const&
get_device () const;
/**
* Set the block device of the chroot. This is the "source" device.
* It may be the case that the real device is different (for
* example, an LVM snapshot PV), but by default will be the device
* to mount.
*
* @param device the device.
*/
void
set_device (std::string const& device);
virtual std::string const&
get_mount_device () const;
/**
* Get the filesystem mount_options of the chroot block device.
*
* @returns the mount options.
*/
std::string const&
get_mount_options () const;
/**
* Set the filesystem mount_options of the chroot block device.
*
* @param mount_options the mount options.
*/
void
set_mount_options (std::string const& mount_options);
/**
* Get the location. This is a path to the chroot directory
* inside the LV (absolute path from the LV root).
*
* @returns the location.
*/
virtual std::string const&
get_location () const;
/**
* Set the location. This is a path to the chroot directory
* inside the LV (absolute path from the LV root).
*
* @param location the location.
*/
virtual void
set_location (std::string const& location);
virtual std::string const&
get_chroot_type () const;
virtual void
setup_env (environment& env);
virtual session_flags
get_session_flags () const;
protected:
virtual void
setup_lock (chroot::setup_type type,
bool lock,
int status);
virtual void
get_details (format_detail& detail) const;
virtual void
get_keyfile (keyfile& keyfile) const;
virtual void
set_keyfile (keyfile const& keyfile);
private:
/// The block device to use.
std::string device;
/// The options to mount the device with.
std::string mount_options;
};
}
#endif /* SBUILD_CHROOT_BLOCK_DEVICE_H */
/*
* Local Variables:
* mode:C++
* End:
*/
|