From 4af4c1acc7b77d70af1b09964c7cbddb5c797214 Mon Sep 17 00:00:00 2001 From: Bipin Kunal Date: Fri, 13 Nov 2015 19:19:17 +0530 Subject: docs: move contributor docs to the glusterdocs repository * Moved few files to glusterdocs repo * Files were moved in pull requests given below: https://github.com/gluster/glusterdocs/pull/60 https://github.com/gluster/glusterdocs/pull/62 * This patch removes file from this repo which were moved to glusterdocs repo Change-Id: I6e529911e0be66b261961c44bcdbe361aafa2886 BUG: 1206539 Signed-off-by: Bipin Kunal Reviewed-on: http://review.gluster.org/12576 Reviewed-by: Niels de Vos Tested-by: NetBSD Build System Tested-by: Gluster Build System --- doc/developer-guide/Backport-Guidelines.md | 41 -- doc/developer-guide/Backport-Wishlist.md | 193 --------- doc/developer-guide/Bug-Reporting-Guidelines.md | 128 ------ doc/developer-guide/Bug-Triage.md | 400 ------------------ doc/developer-guide/Bug-report-Life-Cycle.md | 57 --- doc/developer-guide/Bug-reporting-template.md | 55 --- doc/developer-guide/Building GlusterFS.md | 147 ------- doc/developer-guide/Compiling-RPMS.md | 178 -------- doc/developer-guide/Developers-Index.md | 54 --- doc/developer-guide/Development-Workflow.md | 457 --------------------- doc/developer-guide/Easy-Fix-Bugs.md | 35 -- ...s-reported-by-tools-for-static-code-analysis.md | 66 --- doc/developer-guide/GlusterFS-Release-process.md | 73 ---- doc/developer-guide/Guidelines-For-Maintainers.md | 70 ---- doc/developer-guide/Jenkins-Infrastructure.md | 127 ------ doc/developer-guide/Jenkins-Manual-Setup.md | 146 ------- doc/developer-guide/Projects.md | 99 ----- .../Simplified-Development-Workflow.md | 238 ----------- 18 files changed, 2564 deletions(-) delete mode 100644 doc/developer-guide/Backport-Guidelines.md delete mode 100644 doc/developer-guide/Backport-Wishlist.md delete mode 100644 doc/developer-guide/Bug-Reporting-Guidelines.md delete mode 100644 doc/developer-guide/Bug-Triage.md delete mode 100644 doc/developer-guide/Bug-report-Life-Cycle.md delete mode 100644 doc/developer-guide/Bug-reporting-template.md delete mode 100644 doc/developer-guide/Building GlusterFS.md delete mode 100644 doc/developer-guide/Compiling-RPMS.md delete mode 100644 doc/developer-guide/Development-Workflow.md delete mode 100644 doc/developer-guide/Easy-Fix-Bugs.md delete mode 100644 doc/developer-guide/Fixing-issues-reported-by-tools-for-static-code-analysis.md delete mode 100644 doc/developer-guide/GlusterFS-Release-process.md delete mode 100644 doc/developer-guide/Guidelines-For-Maintainers.md delete mode 100644 doc/developer-guide/Jenkins-Infrastructure.md delete mode 100644 doc/developer-guide/Jenkins-Manual-Setup.md delete mode 100644 doc/developer-guide/Projects.md delete mode 100644 doc/developer-guide/Simplified-Development-Workflow.md (limited to 'doc') diff --git a/doc/developer-guide/Backport-Guidelines.md b/doc/developer-guide/Backport-Guidelines.md deleted file mode 100644 index af48dc00f03..00000000000 --- a/doc/developer-guide/Backport-Guidelines.md +++ /dev/null @@ -1,41 +0,0 @@ -Bugs often get fixed in master before release branches. When a bug is -fixed in the master branch, it might be desirable or necessary in a -stable branch. To put the fix in stable branch we need to backport the -fix to stable branch. - -Anyone in the community can suggest a backport. If you are interested to -suggest a backport, please check the [Backport -Wishlist](./Backport Wishlist.md). - -This page describes the steps needed to backport simple changes. Changes -that do not apply cleanly will need some manual modifications and using -`git cherry-pick` may not always be the easiest solution. - -1. Git clone the GlusterFS code - - git clone ssh://username@review.gluster.org/glusterfs - -2. Create and checkout a new branch for your work, based on the branch - for the backport version - - git checkout -t -b bug-123456/release-3.5 origin/release-3.5 - -3. Cherry pick the change from master. - - $ git cherry-pick -x a0b1c2d3e4f5 - - verify that the change has been merged in the master branch. - -4. Update/correct the commit message. - - $ git commit -s --amend --date="$(date)" -[This is one example](https://github.com/gluster/glusterfs/commit/40407afb529f6e5fa2f79e9778c2f527122d75eb) of the commit message that has a good description for a backport. Notice the indention of the patch-metadata like BUG, Change-ID and Reviewed-on tags. There is also the original commit-id that was cherry picked from the master branch. - -make sure to quote the review tags - -update the BUG reference, point to the BUG that is used for this -particular release-branch - -add a Signed-off-by tag - -5. Run `./rfc.sh` to post the backport for review. - - ./rfc.sh -After submitting patch(es), make sure to move the bug to the *POST* -status. diff --git a/doc/developer-guide/Backport-Wishlist.md b/doc/developer-guide/Backport-Wishlist.md deleted file mode 100644 index f191820c803..00000000000 --- a/doc/developer-guide/Backport-Wishlist.md +++ /dev/null @@ -1,193 +0,0 @@ -Bugs often get fixed in master before release branches. - -When a bug is fixed in the master branch it might be desirable or -necessary to backport the fix to a stable branch. - -This page is intended to help organize support (and prioritization) for -backporting bug fixes of importance to the community. - -### GlusterFs 3.6 - -Requested Backports for 3.6.0 ------------------------------ - -The tracker bug for 3.6.0 : - - -Please add 'glusterfs-3.6.0' in the 'Blocks' field of bugs to propose -inclusion in GlusterFS 3.6.0. - -### GlusterFs 3.5 - -Requested Backports for 3.5.3 ------------------------------ - -Current [list of bugs planned for -inclusion](https://bugzilla.redhat.com/showdependencytree.cgi?hide_resolved=0&id=glusterfs-3.5.3). - -- File a new bug for backporting a patch to 3.5.3: - [... - new glusterfs-3.5.3 backport request] - -### GlusterFs 3.4 - -Requested Backports for 3.4.6 ------------------------------ - -The tracker bug for 3.4.6 : - - -Please add 'glusterfs-3.4.6' in the 'Blocks' field of bugs to propose -inclusion in GlusterFS 3.4.6. - - - - -Requested Backports for 3.4.4 ------------------------------ - - - "self-heal -process can sometimes create directories instead of symlinks for the -root gfid file in .glusterfs" - - - "structure needs -cleaning" message appear when accessing files. - - - glusterfs mount -crash after remove brick, detach peer and termination - -Requested Backports for 3.4.3 ------------------------------ - - - "self-heal -process can sometimes create directories instead of symlinks for the -root gfid file in .glusterfs" - - - "structure needs -cleaning" message appear when accessing files. - - - large NFS writes -to Gluster slow down then stop - - - glusterfs mount -crash after remove brick, detach peer and termination - -Requested Backports for 3.3.3 ------------------------------ - -[Enable fusermount by default, make nightly autobuilding -work](https://bugzilla.redhat.com/1058666) - -Requested Backports for 3.4.2 ------------------------------ - -Please enter bugzilla ID or patch URL here: - -​1) Until RDMA handling is improved, we should output a warning when -using RDMA volumes - - - -​2) Unable to shrink volumes without dataloss - - - -​3) cluster/dht: Allow non-local clients to function with nufa volumes. -- - -Requested Backports for 3.4.1 ------------------------------ - -Please enter bugzilla ID or patch URL here. - - - "quota context -not set in inode" - - - "NFS crash bug" - -A note for whoever reviews this list: These are the fixes for issues -that have caused actual service disruption in our production -installation and thus are absolutely required for us (-- Lubomir -Rintel): - - - "Setting ACL -entries fails with glusterfs-3.4.0" - - - "fd leaks -observed while running dbench with "open-behind" volume option set to -"on" on a replicate volume" - -These are issues that we've stumbled upon during the git log review and -that seemed scary enough for us to cherry-pick them to avoid risk, -despite not being actually hit. Hope that helps deciding whether it's -worthwhile cherry-picking them (-- Lubomir Rintel): - - "CLI crash upon -executing "gluster peer status" command" - - "quick-read and -open-behind xlator: Make options (volume\_options ) structure NULL -terminated." - - "nfs-root-squash: -rename creates a file on a file residing inside a sticky bit set -directory" - - "DHT : files are -stored on directory which doesn't have hash range(hash layout)" - - "statedump crashes -in ioc\_inode\_dump" - - "cli crashes when -setting diagnostics.client-log-level is set to trace" - - "glusterfsd crashes -on smallfile benchmark" - -, "tests: call 'cleanup' at the end of -each test", , -backport of 983975 - -, "glusterfs-api.pc.in contains an -rpath", , backport -of 1002220 - - "glusterd.service (systemd), ensure -glusterd starts before any local gluster mounts", -, backport of -1004795 - - meta, check that -glusterfs.spec.in has all relevant updates - - - Glusterd would -not store all the volumes when a global options were set leading to peer -rejection - -Requested Backports -------------------- - -- Please backport [gfapi: Closed the logfile fd and initialize to NULL - in glfs\_fini](http://review.gluster.org/#/c/6552) into release-3.5 - - Done -- Please backport [cluster/dht: Make sure loc has - gfid](http://review.gluster.org/5178) into release-3.4 -- Please backport [Bug 887098](http://goo.gl/QjeMP) into release-3.3 - (FyreFoX) - Done -- Please backport [Bug 856341](http://goo.gl/9cGAC) into release-3.2 - and release-3.3 (the-me o/b/o Debian) - Done for release-3.3 -- Please backport [Bug 895656](http://goo.gl/ZNs3J) into release-3.2 - and release-3.3 (semiosis, x4rlos) - Done for release-3.3 -- Please backport [Bug 918437](http://goo.gl/1QRyw) into release-3.3 - (tjstansell) - Done -- Please backport into [Bug - 884597](https://bugzilla.redhat.com/show_bug.cgi?id=884597) - release-3.3 (nocko) - Done - -Unaddressed bugs ----------------- - -- [Bug 838784](https://bugzilla.redhat.com/show_bug.cgi?id=838784) -- [Bug 893778](https://bugzilla.redhat.com/show_bug.cgi?id=893778) -- [Bug 913699](https://bugzilla.redhat.com/show_bug.cgi?id=913699); - possibly related to [Bug - 884597](https://bugzilla.redhat.com/show_bug.cgi?id=884597) \ No newline at end of file diff --git a/doc/developer-guide/Bug-Reporting-Guidelines.md b/doc/developer-guide/Bug-Reporting-Guidelines.md deleted file mode 100644 index d03878adebd..00000000000 --- a/doc/developer-guide/Bug-Reporting-Guidelines.md +++ /dev/null @@ -1,128 +0,0 @@ -Before filing a bug -------------------- - -If you are finding any issues, these preliminary checks as useful: - -- Is SELinux enabled? (you can use `getenforce` to check) -- Are iptables rules blocking any data traffic? (`iptables -L` can - help check) -- Are all the nodes reachable from each other? [ Network problem ] -- Please search Bugzilla to see if the bug has already been reported - - Choose GlusterFS as the "product", and then type something - relevant in the "words" box. If you are seeing a crash or abort, - searching for part of the abort message might be effective. If - you are feeling adventurous you can select the "Advanced search" - tab; this gives a lot more control but isn't much better for - finding existing bugs. - - If a bug has been already filed for a particular release and you - found the bug in another release, - - please clone the existing bug for the release, you found the - issue. - - If the existing bug is against mainline and you found the - issue for a release, then the cloned bug *depends on* should - be set to the BZ for mainline bug. - -Anyone can search in Bugzilla, you don't need an account. Searching -requires some effort, but helps avoid duplicates, and you may find that -your problem has already been solved. - -Reporting A Bug ---------------- - -- You should have a Bugzilla account -- Here is the link to file a bug: - [Bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=GlusterFS) -- The template for filing a bug can be found [ - *here*](./Bug reporting template.md) - -*Note: Please go through all below sections to understand what -information we need to put in a bug. So it will help the developer to -root cause and fix it* - -### Required Information - -You should gather the information below before creating the bug report. - -#### Package Information - -- Location from which the packages are used -- Package Info - version of glusterfs package installed - -#### Cluster Information - -- Number of nodes in the cluster -- Hostnames and IPs of the gluster Node [if it is not a security - issue] - - Hostname / IP will help developers in understanding & - correlating with the logs -- Output of `gluster peer status` -- Node IP, from which the "x" operation is done - - "x" here means any operation that causes the issue - -#### Volume Information - -- Number of volumes -- Volume Names -- Volume on which the particular issue is seen [ if applicable ] -- Type of volumes -- Volume options if available -- Output of `gluster volume info` -- Output of `gluster volume status` -- Get the statedump of the volume with the problem - -`   $ gluster volume statedump ` - -This dumps statedump per brick process in `/var/run/gluster` - -*NOTE: Collect statedumps from one gluster Node in a directory.* - -Repeat it in all Nodes containing the bricks of the volume. All the so -collected directories could be archived,compressed and attached to bug - -#### Brick Information - -- xfs options when brick partition was done - - This could be obtained with this command : - -`   $ xfs_info /dev/mapper/vg1-brick` - -- Extended attributes on the bricks - - This could be obtained with this command: - -`   $ getfattr -d -m. -ehex /rhs/brick1/b1` - -#### Client Information - -- OS Type ( Windows, RHEL ) -- OS Version : In case of Linux distro get the following : - -`   $ uname -r`\ -`   $ cat /etc/issue` - -- Fuse or NFS Mount point on the client with output of mount commands -- Output of `df -Th` command - -#### Tool Information - -- If any tools are used for testing, provide the info/version about it -- if any IO is simulated using a script, provide the script - -#### Logs Information - -- You can check logs for check for issues/warnings/errors. - - Self-heal logs - - Rebalance logs - - Glusterd logs - - Brick logs - - NFS logs (if applicable) - - Samba logs (if applicable) - - Client mount log -- Add the entire logs as attachment, if its very large to paste as a - comment - -#### SOS report for CentOS/Fedora - -- Get the sosreport from the involved gluster Node and Client [ in - case of CentOS /Fedora ] -- Add a meaningful name/IP to the sosreport, by renaming/adding - hostname/ip to the sosreport name diff --git a/doc/developer-guide/Bug-Triage.md b/doc/developer-guide/Bug-Triage.md deleted file mode 100644 index bcd475e81fb..00000000000 --- a/doc/developer-guide/Bug-Triage.md +++ /dev/null @@ -1,400 +0,0 @@ -Bug Triage Guidelines -===================== - -- Triaging of bugs is an important task; when done correctly, it can - reduce the time between reporting a bug and the availability of a - fix enormously. - -- Triager should focus on new bugs, and try to define the problem - easily understandable and as accurate as possible. The goal of the - triagers is to reduce the time that developers need to solve the bug - report. - -- A triager is like an assistant that helps with the information - gathering and possibly the debugging of a new bug report. Because a - triager helps preparing a bug before a developer gets involved, it - can be a very nice role for new community members that are - interested in technical aspects of the software. - -- Triagers will stumble upon many different kind of issues, ranging - from reports about spelling mistakes, or unclear log messages to - memory leaks causing crashes or performance issues in environments - with several hundred storage servers. - -Nobody expects that triagers can prepare all bug reports. Therefore most -developers will be able to assist the triagers, answer questions and -suggest approaches to debug and data to gather. Over time, triagers get -more experienced and will rely less on developers. - -**Bug triage can be summarised as below points:** - -- Is there enough information in the bug description? -- Is it a duplicate bug? -- Is it assigned to correct component of GlusterFS? -- Are the Bugzilla fields correct? -- Is the bug summary is correct? -- Assigning bugs or Adding people to the "CC" list -- Fix the Severity And Priority. -- Todo, If the bug present in multiple GlusterFS versions. -- Add appropriate Keywords to bug. - -The detailed discussion about the above points are below. - -Weekly meeting about Bug Triaging ---------------------------------- - -We try to meet every week in \#gluster-meeting on Freenode. The meeting -date and time for the next meeting is normally updated in the -[agenda](https://public.pad.fsfe.org/p/gluster-bug-triage). - -Getting Started: Find reports to triage ---------------------------------------- - -There are many different techniques and approaches to find reports to -triage. One easy way is to use these pre-defined Bugzilla reports (a -report is completely structured in the URL and can manually be -modified): - -- New **bugs** that do not have the 'Triaged' keyword [Bugzilla - link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&f1=keywords&keywords=Triaged%2CFutureFeature&keywords_type=nowords&list_id=3014117&o1=nowords&product=GlusterFS&query_format=advanced&v1=Triaged) -- New **features** that do not have the 'Triaged' keyword (identified - by FutureFeature keyword, probably of interest only to project - leaders) [Bugzilla - link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&f1=keywords&f2=keywords&list_id=3014699&o1=nowords&o2=allwords&product=GlusterFS&query_format=advanced&v1=Triaged&v2=FutureFeature) -- New glusterd bugs: [Bugzilla - link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&product=GlusterFS&f1=keywords&o1=nowords&v1=Triaged&component=glusterd) -- New Replication(afr) bugs: [Bugzilla - link](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&component=replicate&f1=keywords&list_id=2816133&o1=nowords&product=GlusterFS&query_format=advanced&v1=Triaged) -- New distribute(DHT) bugs: [Bugzilla - links](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&component=distribute&f1=keywords&list_id=2816148&o1=nowords&product=GlusterFS&query_format=advanced&v1=Triaged) - -- New bugs against version 3.6: - [=\^3.6 - Bugzilla link] -- New bugs against version 3.5: - [=\^3.5 - Bugzilla link] -- New bugs against version 3.4: - [=\^3.4 - Bugzilla link] - -- [=&bug\_status=all&tab=recents - bugzilla tracker] (can include already Triaged bugs) - -- [Untriaged NetBSD - bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=nowords&op_sys=NetBSD&product=GlusterFS) -- [Untriaged FreeBSD - bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=nowords&op_sys=FreeBSD&product=GlusterFS) -- [Untriaged Mac OS - bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=nowords&op_sys=Mac%20OS&product=GlusterFS) - -In addition to manually checking Bugzilla for bugs to triage, it is also -possible to receive emails when new -bugs are filed or existing bugs get updated. - -If at any point you feel like you do not know what to do with a certain -report, please first ask [irc or mailing -lists](http://www.gluster.org/community/index.html) before changing -something. - -Is there enough information? ----------------------------- - -To make a report useful, the same rules apply as for -[bug reporting guidelines](./Bug Reporting Guidelines.md). - -It's hard to generalize what makes a good report. For "average" -reporters is definitely often helpful to have good steps to reproduce, -GlusterFS software version , and information about the test/production -environment, Linux/GNU distribution. - -If the reporter is a developer, steps to reproduce can sometimes be -omitted as context is obvious. *However, this can create a problem for -contributors that need to find their way, hence it is strongly advised -to list the steps to reproduce an issue.* - -Other tips: - -- There should be only one issue per report. Try not to mix related or - similar looking bugs per report. - -- It should be possible to call the described problem fixed at some - point. "Improve the documentation" or "It runs slow" could never be - called fixed, while "Documentation should cover the topic Embedding" - or "The page at should load - in less than five seconds" would have a criterion. A good summary of - the bug will also help others in finding existing bugs and prevent - filing of duplicates. - -- If the bug is a graphical problem, you may want to ask for a - screenshot to attach to the bug report. Make sure to ask that the - screenshot should not contain any confidential information. - -Is it a duplicate? ------------------- - -Some reports in Bugzilla have already been reported before so you can -[search for an already existing -report](https://bugzilla.redhat.com/query.cgi?format=advanced). We do -not recommend to spend too much time on it; if a bug is filed twice, -someone else will mark it as a duplicate later. If the bug is a -duplicate, mark it as a duplicate in the resolution box below the -comment field by setting the **CLOSED DUPLICATE** status, and shortly -explain your action in a comment for the reporter. When marking a bug as -a duplicate, it is required to reference the original bug. - -If you think that you have found a duplicate but you are not totally -sure, just add a comment like "This bug looks related to bug XXXXX" (and -replace XXXXX by the bug number) so somebody else can take a look and -help judging. - -You can also take a look at -https://bugzilla.redhat.com/page.cgi?id=browse.html&product=GlusterFS&product_version>=&bug\_status=all&tab=duplicates's -list of existing duplicates - -Is it assigned to correct component of GlusterFS? -------------------------------------------------- - -Make sure the bug is assigned on right component. Below are the list of -GlusterFs components in bugzilla. - -- access control - Access control translator -- BDB - Berkeley DB backend storage -- booster - LD\_PRELOAD'able access client -- build - Compiler, package management and platform specific warnings - and errors -- cli -gluster command line -- core - Core features of the filesystem -- distribute - Distribute translator (previously DHT) -- errorgen - Error Gen Translator -- fuse -mount/fuse translator and patched fuse library -- georeplication - Gluster Geo-Replication -- glusterd - Management daemon -- HDFS - Hadoop application support over GlusterFS -- ib-verbs - Infiniband verbs transport -- io-cache - IO buffer caching translator -- io-threads - IO threads performance translator -- libglusterfsclient- API interface to access glusterfs volumes - programatically -- locks - POSIX and internal locks -- logging - Centralized logging, log messages, log rotation etc -- nfs- NFS component in GlusterFS -- nufa- Non-Uniform Filesystem Scheduler Translator -- object-storage - Object Storage -- porting - Porting GlusterFS to different operating systems and - platforms -- posix - POSIX (API) based backend storage -- protocol -Client and Server protocol translators -- quick-read- Quick Read Translator -- quota - Volume & Directory quota translator -- rdma- RDMA transport -- read-ahead - Read ahead (file) performance translator -- replicate- Replication translator (previously AFR) -- rpc - RPC Layer -- scripts - Build scripts, mount scripts, etc. -- stat-prefetch - Stat prefetch translator -- stripe - Striping (RAID-0) cluster translator -- trace- Trace translator -- transport - Socket (IPv4, IPv6, unix, ib-sdp) and generic transport - code -- unclassified - Unclassified - to be reclassified as other components -- unify - Unify translator and schedulers -- write-behind- Write behind performance translator -- libgfapi - APIs for GlusterFS -- tests- GlusterFS Test Framework -- gluster-hadoop - Hadoop support on GlusterFS -- gluster-hadoop-install - Automated Gluster volume configuration for - Hadoop Environments -- gluster-smb - gluster smb -- puppet-gluster - A puppet module for GlusterFS - -Tips for searching: - -- As it is often hard for reporters to find the right place (product - and component) where to file a report, also search for duplicates - outside same product and component of the bug report you are - triaging. -- Use common words and try several times with different combinations, - as there could be several ways to describe the same problem. If you - choose the proper and common words, and you try several times with - different combinations of those, you ensure to have matching - results. -- Drop the ending of a verb (e.g. search for "delet" so you get - reports for both "delete" and "deleting"), and also try similar - words (e.g. search both for "delet" and "remov"). -- Search using the date range delimiter: Most of the bug reports are - recent, so you can try to increase the search speed using date - delimiters by going to "Search by Change History" on the [search - page](https://bugzilla.redhat.com/query.cgi?format=advanced). - Example: search from "2011-01-01" or "-730d" (to cover the last two - years) to "Now". - -Are the fields correct? ------------------------ - -### Summary - -Sometimes the summary does not summarize the bug itself well. You may -want to update the bug summary to make the report distinguishable. A -good title may contain: - -- A brief explanation of the root cause (if it was found) -- Some of the symptoms people are experiencing - -### Adding people to the "CC" or changing the "Assigned to" field - -Normally, developers and potential assignees of an area are already -CC'ed by default, but sometimes reports describe general issues or are -filed against common bugzilla products. Only if you know developers who -work in the area covered by the bug report, and if you know that these -developers accept getting CCed or assigned to certain reports, you can -add that person to the CC field or even assign the bug report to -her/him. - -To get an idea who works in which area, check To know component owners , -you can check the "MAINTAINERS" file in root of glusterfs code directory -or querying changes in [Gerrit](http://review.gluster.org) (see -[Simplified dev workflow](./Simplified Development Workflow.md)) - -### Severity And Priority - -Please see below for information on the available values and their -meanings. - -#### Severity - -This field is a pull-down of the external weighting of the bug report's -importance and can have the following values: - - Severity |Definition - -------------|------------------------------------------------------------------------------------------------------------------------------------------------------------- - urgent |catastrophic issues which severely impact the mission-critical operations of an organization. This may mean that the operational servers, development systems or customer applications are down or not functioning and no procedural workaround exists. - high |high-impact issues in which the customer's operation is disrupted, but there is some capacity to produce - medium |partial non-critical functionality loss, or issues which impair some operations but allow the customer to perform their critical tasks. This may be a minor issue with limited loss or no loss of functionality and limited impact to the customer's functionality - low |general usage questions, recommendations for product enhancement, or development work - unspecified |importance not specified - -#### Priority - -This field is a pull-down of the internal weighting of the bug report's -importance and can have the following values: - - Priority |Definition - -------------|------------------------ - urgent |extremely important - high |very important - medium |average importance - low |not very important - unspecified |importance not specified - - -### Bugs present in multiple Versions - -During triaging you might come across a particular bug which is present -across multiple version of GlusterFS. Here are the course of actions: - -- We should have separate bugs for each release (We should - clone bugs if required) -- Bugs in released versions should be depended on bug for mainline - (master branch) if the bug is applicable for mainline. - - This will make sure that the fix would get merged in master - branch first then the fix can get ported to other stable - releases. - -*Note: When a bug depends on other bugs, that means the bug cannot be -fixed unless other bugs are fixed (depends on), or this bug stops other -bugs being fixed (blocks)* - -Here are some examples: - -- A bug is raised for GlusterFS 3.5 and the same issue is present in - mainline (master branch) and GlusterFS 3.6 - - Clone the original bug for mainline. - - Clone another for 3.6. - - And have the GlusterFS 3.6 bug and GlusterFS 3.5 bug 'depend on' - the 'mainline' bug - -- A bug is already present for mainline, and the same issue is seen in - GlusterFS 3.5. - - Clone the original bug for GlusterFS 3.5. - - And have the cloned bug (for 3.5) 'depend on' the 'mainline' - bug. - -### Keywords - -Many predefined searches for Bugzilla include keywords. One example are -the searches for the triaging. If the bug is 'NEW' and 'Triaged' is no -set, you (as a triager) can pick it and use this page to triage it. When -the bug is 'NEW' and 'Triaged' is in the list of keyword, the bug is -ready to be picked up by a developer. - -**Triaged** -: Once you are done with triage add the **Triaged** keyword to the - bug, so that others will know the triaged state of the bug. The - predefined search at the top of this page will then not list the - Triaged bug anymore. Instead, the bug should have moved to [this - list](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&product=GlusterFS). - -**EasyFix** -: By adding the **EasyFix** keyword, the bug gets added to the [list - of bugs that should be simple to fix](./Easy Fix Bugs.md). - Adding this keyword is encouraged for simple and well defined bugs - or feature enhancements. - -**Patch** -: When a patch for the problem has been attached or included inline, - add the **Patch** keyword so that it is clear that some preparation - for the development has been done already. If course, it would have - been nicer if the patch was sent to Gerrit for review, but not - everyone is ready to pass the Gerrit hurdle when they report a bug. - -You can also add the **Patch** keyword when a bug has been fixed in - mainline and the patch(es) has been identified. Add a link to the - Gerrit change(s) so that backporting to a stable release is made - simpler. - -**Documentation** -: Add the **Documentation** keyword when a bug has been reported for - the documentation. This helps editors and writers in finding the - bugs that they can resolve. - -**Tracking** -: This keyword is used for bugs which are used to track other bugs for - a particular release. For example [3.6 tracker - bug](https://bugzilla.redhat.com/showdependencytree.cgi?maxdepth=2&hide_resolved=1&id=glusterfs-3.6.0) - -**FutureFeature** -: This keyword is used for bugs which are used to request for a - feature enhancement ( RFE - Requested Feature Enhancement) for - future releases of GlusterFS. If you open a bug by requesting a - feature which you would like to see in next versions of GlusterFS - please report with this keyword. - -Add yourself to the CC list ---------------------------- - -By adding yourself to the CC list of bug reports that you change, you -will receive followup emails with all comments and changes by anybody on -that individual report. This helps learning what further investigations -others make. You can change the settings in Bugzilla on which actions -you want to receive mail. - -Bugs For Group Triage ---------------------- - -If you come across a bug/ bugs or If you think any bug should to go -thorough the bug triage group, please set NEEDINFO for bugs@gluster.org -on the bug. - -Resolving bug reports ---------------------- - -See the [Bug report life cycle](./Bug report Life Cycle.md) for -the meaning of the bug status and resolutions. - -Example of Triaged Bugs ------------------------ - -This Bugzilla -[filter](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=Triaged&keywords_type=anywords&list_id=2739593&product=GlusterFS&query_format=advanced) -will list NEW, Triaged Bugs diff --git a/doc/developer-guide/Bug-report-Life-Cycle.md b/doc/developer-guide/Bug-report-Life-Cycle.md deleted file mode 100644 index 3749bd6272a..00000000000 --- a/doc/developer-guide/Bug-report-Life-Cycle.md +++ /dev/null @@ -1,57 +0,0 @@ -This page describes the life of a bug report. - -- When a bug is first reported, it is given the **NEW** status. -- Once a developer has started, or is planning to work on a bug, the - status **ASSIGNED** is set. The "Assigned to" field should mention a - specific developer. -- If an initial - [patch](https://en.wikipedia.org/wiki/Patch_(computing)) for a bug - has been put into the [Gerrit code review - tool](http://review.gluster.org), the status **POST** should be set - manually. The status **POST** should only be used when all patches - for a specific bug have been posted for review. -- After a review of the patch, and passing any automated regression - tests, the patch will get merged by one of the maintainers. When the - patch has been merged into the git repository, a comment is added to - the bug. Only when all needed patches have been merged, the assigned - engineer will need to change the status to **MODIFIED**. -- Once a package is available with fix for the bug, the status should - be moved to **ON\_QA**. - - The **Fixed in version** field should get the name/release of - the package that contains the fix. Packages for multiple - distributions will mostly get available within a few days after - the *make dist* tarball was created. - - This tells the bug reporter that a package is available with fix - for the bug and that they should test the package. - - The release maintainer need to do this change to bug status, - scripts are available (ask *ndevos*). -- The status **VERIFIED** is set if a QA tester or the reporter - confirmed the fix after fix is merged and new build with the fix - resolves the issue. -- In case the version does not fix the reported bug, the status should - be moved back to **ASSIGNED** with a clear note on what exactly - failed. -- When a report has been solved it is given **CLOSED** status. This - can mean: - - **CLOSED/CURRENTRELEASE** when a code change that fixes the - reported problem has been merged in - [Gerrit](http://review.gluster.org). - - **CLOSED/WONTFIX** when the reported problem or suggestion is - valid, but any fix of the reported problem or implementation of - the suggestion would be barred from approval by the project's - Developers/Maintainers (or product managers, if existing). - - **CLOSED/WORKSFORME** when the problem can not be reproduced, - when missing information has not been provided, or when an - acceptable workaround exists to achieve a similar outcome as - requested. - - **CLOSED/CANTFIX** when the problem is not a bug, or when it is - a change that is outside the power of GlusterFS development. For - example, bugs proposing changes to third-party software can not - be fixed in the GlusterFS project itself. - - **CLOSED/DUPLICATE** when the problem has been reported before, - no matter if the previous report has been already resolved or - not. - -If a bug report was marked as *CLOSED* or *VERIFIED* and it turns out -that this was incorrect, the bug can be changed to the status *ASSIGNED* -or *NEW*. \ No newline at end of file diff --git a/doc/developer-guide/Bug-reporting-template.md b/doc/developer-guide/Bug-reporting-template.md deleted file mode 100644 index f8d1157d447..00000000000 --- a/doc/developer-guide/Bug-reporting-template.md +++ /dev/null @@ -1,55 +0,0 @@ -Template for bug description ----------------------------- -This template should be in-line to the [Bug reporting guidelines](./Bug Reporting Guidelines.md). -The template is replacement for the default description template present in [Bugzilla](https://bugzilla.redhat.com) - - work in progress - ------------------------------------------------------------------------- - -Description of problem: - -Version of GlusterFS package installed: - -Location from which the packages are used: - -GlusterFS Cluster Information: - -- Number of volumes -- Volume Names -- Volume on which the particular issue is seen [ if applicable ] -- Type of volumes -- Volume options if available -- Output of `gluster volume info` -- Output of `gluster volume status` -- Get the statedump of the volume with the problem - -` $ gluster volume statedump ` - -- Client Information - - OS Type: - - Mount type: - - OS Version: - -How reproducible: - -Steps to Reproduce: - -- 1. -- 2. -- 3. - -Actual results: - -Expected results: - -Logs Information: - -- Provide possible issues, warnings, errors as a comment to the bug - - Look for issues/warnings/errors in self-heal logs, rebalance logs, glusterd logs, brick logs, mount logs/nfs logs/smb logs - - Add the entire logs as attachment, if it is very large to paste as a comment - -Additional info: - - [Bug\_reporting\_guidelines]: Bug_reporting_guidelines "wikilink" - [Bugzilla]: https://bugzilla.redhat.com diff --git a/doc/developer-guide/Building GlusterFS.md b/doc/developer-guide/Building GlusterFS.md deleted file mode 100644 index ab287820f21..00000000000 --- a/doc/developer-guide/Building GlusterFS.md +++ /dev/null @@ -1,147 +0,0 @@ -This page describes how to build and install GlusterFS. - -Build Requirements ------------------- - -The following packages are required for building GlusterFS, - -- GNU Autotools - - Automake - - Autoconf - - Libtool -- lex (generally flex) -- GNU Bison -- OpenSSL -- libxml2 -- Python 2.x -- libaio -- libibverbs -- librdmacm -- readline -- lvm2 -- glib2 -- liburcu -- cmocka -- libacl -- sqlite - -### Fedora - -The following yum command installs all the build requirements for -Fedora, - - # yum install automake autoconf libtool flex bison openssl-devel libxml2-devel python-devel libaio-devel libibverbs-devel librdmacm-devel readline-devel lvm2-devel glib2-devel userspace-rcu-devel libcmocka-devel libacl-devel sqlite-devel - -### Ubuntu - -The following apt-get command will install all the build requirements on -Ubuntu, - - $ sudo apt-get install make automake autoconf libtool flex bison pkg-config libssl-dev libxml2-dev python-dev libaio-dev libibverbs-dev librdmacm-dev libreadline-dev liblvm2-dev libglib2.0-dev liburcu-dev libcmocka-dev libsqlite3-dev libacl1-dev - -Building from Source --------------------- - -This section describes how to build GlusterFS from source. It is assumed -you have a copy of the GlusterFS source (either from a released tarball -or a git clone). All the commands below are to be run with the source -directory as the working directory. - -### Configuring for building - -Run the below commands once for configuring and setting up the build -process. - -Run autogen to generate the configure script. - - $ ./autogen.sh - -Once autogen completes successfully a configure script is generated. Run -the configure script to generate the makefiles. - - $ ./configure - -If the above build requirements have been installed, running the -configure script should give the below configure summary, - - GlusterFS configure summary - =========================== - FUSE client          : yes - Infiniband verbs     : yes - epoll IO multiplex   : yes - argp-standalone      : no - fusermount           : yes - readline             : yes - georeplication       : yes - Linux-AIO            : yes - Enable Debug         : no - Block Device xlator  : yes - glupy                : yes - Use syslog           : yes - XML output           : yes - QEMU Block formats   : yes - Encryption xlator    : yes - -During development it is good to enable a debug build. To do this run -configure with a '--enable-debug' flag. - - $ ./configure --enable-debug - -Further configuration flags can be found by running configure with a -'--help' flag, - - $ ./configure --help - -### Building - -Once configured, GlusterFS can be built with a simple make command. - - $ make - -To speed up the build process on a multicore machine, add a '-jN' flag, -where N is the number of parallel jobs. - -### Installing - -Run 'make install' to install GlusterFS. By default, GlusterFS will be -installed into '/usr/local' prefix. To change the install prefix, give -the appropriate option to configure. If installing into the default -prefix, you might need to use 'sudo' or 'su -c' to install. - - $ sudo make install - -### Running GlusterFS - -GlusterFS can be only run as root, so the following commands will need -to be run as root. If you've installed into the default '/usr/local' -prefix, add '/usr/local/sbin' and '/usr/local/bin' to your PATH before -running the below commands. - -A source install will generally not install any init scripts. So you -will need to start glusterd manually. To manually start glusterd just -run, - - # glusterd - -This will start glusterd and fork it into the background as a daemon -process. You now run 'gluster' commands and make use of GlusterFS. - -Building packages ------------------ - -### Building RPMs - -Building RPMs is really simple. On a RPM based system, for eg. Fedora, -get the source and do the configuration steps as shown in the 'Building -from Source' section. After the configuration step, run the following -steps to build RPMs, - - $ cd extras/LinuxRPM - $ make glusterrpms - -This will create rpms from the source in 'extras/LinuxRPM'. *(Note: You -will need to install the rpmbuild requirements including rpmbuild and -mock)* - -A more detailed description for building RPMs can be found at -[CompilingRPMS](./Compiling RPMS.md). diff --git a/doc/developer-guide/Compiling-RPMS.md b/doc/developer-guide/Compiling-RPMS.md deleted file mode 100644 index 7a243ded739..00000000000 --- a/doc/developer-guide/Compiling-RPMS.md +++ /dev/null @@ -1,178 +0,0 @@ -How to compile GlusterFS RPMs from git source, for RHEL/CentOS, and Fedora --------------------------------------------------------------------------- - -Creating rpm's of GlusterFS from git source is fairly easy, once you -know the steps. - -RPMS can be compiled on at least the following OS's: - -- Red Hat Enterprise Linux 5, 6 (& 7 when available) -- CentOS 5, 6 (& 7 when available) -- Fedora 16-20 - -Specific instructions for compiling are below. If you're using: - -- Fedora 16-20 - Follow the Fedora steps, then do all of the Common - steps. -- CentOS 5.x - Follow the CentOS 5.x steps, then do all of the Common - steps -- CentOS 6.x - Follow the CentOS 6.x steps, then do all of the Common - steps. -- RHEL 6.x - Follow the RHEL 6.x steps, then do all of the Common - steps. - -Note - these instructions have been explicitly tested on all of CentOS -5.10, RHEL 6.4, CentOS 6.4+, and Fedora 16-20. Other releases of -RHEL/CentOS and Fedora may work too, but haven't been tested. Please -update this page appropriately if you do so. :) - -### Preparation steps for Fedora 16-20 (only) - -​1. Install gcc, the python development headers, and python setuptools: - - $ sudo yum -y install gcc python-devel python-setuptools - -​2. If you're compiling GlusterFS version 3.4, then install -python-swiftclient. Other GlusterFS versions don't need it: - - $ sudo easy_install simplejson python-swiftclient - -Now follow through the **Common Steps** part below. - -### Preparation steps for CentOS 5.x (only) - -You'll need EPEL installed first and some CentOS specific packages. The -commands below will get that done for you. After that, follow through -the "Common steps" section. - -​1. Install EPEL first: - - $ curl -OL http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm - $ sudo yum -y install epel-release-5-4.noarch.rpm --nogpgcheck - -​2. Install the packages required only on CentOS 5.x: - - $ sudo yum -y install buildsys-macros gcc ncurses-devel python-ctypes python-sphinx10 \ -   redhat-rpm-config - -Now follow through the **Common Steps** part below. - -### Preparation steps for CentOS 6.x (only) - -You'll need EPEL installed first and some CentOS specific packages. The -commands below will get that done for you. After that, follow through -the "Common steps" section. - -​1. Install EPEL first: - - $ sudo yum -y install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm - -​2. Install the packages required only on CentOS: - - $ sudo yum -y install python-webob1.0 python-paste-deploy1.5 python-sphinx10 redhat-rpm-config - -Now follow through the **Common Steps** part below. - -### Preparation steps for RHEL 6.x (only) - -You'll need EPEL installed first and some RHEL specific packages. The 2 -commands below will get that done for you. After that, follow through -the "Common steps" section. - -​1. Install EPEL first: - - $ sudo yum -y install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm - -​2. Install the packages required only on RHEL: - - $ sudo yum -y --enablerepo=rhel-6-server-optional-rpms install python-webob1.0 \ -   python-paste-deploy1.5 python-sphinx10 redhat-rpm-config - -Now follow through the **Common Steps** part below. - -### Common Steps - -These steps are for both Fedora and RHEL/CentOS. At the end you'll have -the complete set of GlusterFS RPMs for your platform, ready to be -installed. - -**NOTES for step 1 below:** - -- If you're on RHEL/CentOS 5.x and get a message about lvm2-devel not - being available, it's ok. You can ignore it. :) -- If you're on RHEL/CentOS 6.x and get any messages about - python-eventlet, python-netifaces, python-sphinx and/or pyxattr not - being available, it's ok. You can ignore them. :) - -​1. Install the needed packages - - $ sudo yum -y --disablerepo=rhs* --enablerepo=*optional-rpms install git autoconf \ -   automake bison cmockery2-devel dos2unix flex fuse-devel glib2-devel libaio-devel \ -   libattr-devel libibverbs-devel librdmacm-devel libtool libxml2-devel lvm2-devel make \ -   openssl-devel pkgconfig pyliblzma python-devel python-eventlet python-netifaces \ -   python-paste-deploy python-simplejson python-sphinx python-webob pyxattr readline-devel \ -   rpm-build tar libcmocka-devel - -​2. Clone the GlusterFS git repository - - $ git clone git://git.gluster.org/glusterfs - $ cd glusterfs - -​3. Choose which branch to compile - -If you want to compile the latest development code, you can skip this -step and go on to the next one. - -If instead you want to compile the code for a specific release of -GlusterFS (such as v3.4), get the list of release names here: - - $ git branch -a | grep release -   remotes/origin/release-2.0 -   remotes/origin/release-3.0 -   remotes/origin/release-3.1 -   remotes/origin/release-3.2 -   remotes/origin/release-3.3 -   remotes/origin/release-3.4 -   remotes/origin/release-3.5 - -Then switch to the correct release using the git "checkout" command, and -the name of the release after the "remotes/origin/" bit from the list -above: - - $ git checkout release-3.4 - -**NOTE -** The CentOS 5.x instructions have only been tested for the -master branch in GlusterFS git. It is unknown (yet) if they work for -branches older then release-3.5. - -​4. Configure and compile GlusterFS - -Now you're ready to compile Gluster: - - $ ./autogen.sh - $ ./configure --enable-fusermount - $ make dist - -​5. Create the GlusterFS RPMs - - $ cd extras/LinuxRPM - $ make glusterrpms - -That should complete with no errors, leaving you with a directory -containing the RPMs. - - $ ls -l *rpm - -rw-rw-r-- 1 jc jc 3966111 Mar  2 12:15 glusterfs-3git-1.el5.centos.src.rpm - -rw-rw-r-- 1 jc jc 1548890 Mar  2 12:17 glusterfs-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc   66680 Mar  2 12:17 glusterfs-api-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc   20399 Mar  2 12:17 glusterfs-api-devel-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  123806 Mar  2 12:17 glusterfs-cli-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc 7850357 Mar  2 12:17 glusterfs-debuginfo-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  112677 Mar  2 12:17 glusterfs-devel-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  100410 Mar  2 12:17 glusterfs-fuse-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  187221 Mar  2 12:17 glusterfs-geo-replication-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  299171 Mar  2 12:17 glusterfs-libs-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc   44943 Mar  2 12:17 glusterfs-rdma-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  123065 Mar  2 12:17 glusterfs-regression-tests-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc   16224 Mar  2 12:17 glusterfs-resource-agents-3git-1.el5.centos.x86_64.rpm - -rw-rw-r-- 1 jc jc  654043 Mar  2 12:17 glusterfs-server-3git-1.el5.centos.x86_64.rpm diff --git a/doc/developer-guide/Developers-Index.md b/doc/developer-guide/Developers-Index.md index a523a4681c9..9bcbcdc4cbe 100644 --- a/doc/developer-guide/Developers-Index.md +++ b/doc/developer-guide/Developers-Index.md @@ -12,44 +12,17 @@ involved. We don't require a signed contributor license agreement or copyright assignment, but we do require a "signed-off-by" line on each code check-in. -- [Simplified Developer Workflow](./Simplified Development Workflow.md) - - A simpler and faster intro to developing with GlusterFS, than the - doc below. -- [Developer Workflow](./Development Workflow.md) - this tells - you about our patch requirements, tools we use, and more. Required - reading if you want to contribute code. - [License Change](http://www.gluster.org/2012/05/glusterfs-license-change/) - we recently changed the client library code to a dual license under the GPL v2 and the LGPL v3 or later - [GlusterFS Coding Standards](./coding-standard.md) -Compiling Gluster ------------------ - -- [Compiling RPMS](./Compiling RPMS.md) - Step by step - instructions for compiling Gluster RPMS -- [Building GlusterFS](./Building GlusterFS.md) - How to compile - Gluster from source code. Including instructions for Ubuntu. - Developing ---------- -- [Projects](./Projects.md) - Ideas for projects you could - create - [Language Bindings](./Language Bindings.md) - Connect to GlusterFS using various language bindings -- [EasyFix\_Bugs](./Easy Fix Bugs.md) - Easy to fix bugs of - GlusterFS. One of the best place to start contributing to GlusterFS. -- [Fixing issues reported by tools for static code - analysis](./Fixing issues reported by tools for static code analysis.md) - - This is a good starting point for developers to fix bugs in - GlusterFS project. -- [Backport Wishlist](./Backport Wishlist.md) - Problems fixed - in the master branch might need to get fixed in stable release - branches too. - The [Backport Guidelines](./Backport Guidelines.md) describe the steps that - branches too. Adding File operations ---------------------- @@ -93,35 +66,8 @@ Testing/Debugging - [Using the Gluster Test Framework](./Using Gluster Test Framework.md) - Step by step instructions for running the Gluster Test Framework -- [Our Jenkins Infrastructure](./Jenkins Infrastructure.md) - A - braindump of the Jenkins infrastructure we have in place for - automated testing -- [Manual steps for setting up a Jenkins slave VM in - Rackspace](./Jenkins Manual Setup.md) - Steps for setting up a slave - VM in Rackspace - [Coredump Analysis](./coredump-analysis.md) - Steps to analize coredumps generated by regression machines. -Bug Handling ------------- - -- [Bug reporting guidelines](./Bug Reporting Guidelines.md) - - Guideline for reporting a bug in GlusterFS -- [Bug triage guidelines](./Bug Triage.md) - Guideline on how to - triage bugs for GlusterFS -- [Bug report life cycle in - Bugzilla](./Bug report Life Cycle.md) - Information about bug - life cycle - -Patch Acceptance ----------------- - -- The [Guidelines For - Maintainers](./Guidelines For Maintainers.md) explains when - maintainers can merge patches. - Release Process --------------- - - [Versioning](./versioning.md) -- [GlusterFS Release Process](./GlusterFS Release process.md) - - Our release process / checklist diff --git a/doc/developer-guide/Development-Workflow.md b/doc/developer-guide/Development-Workflow.md deleted file mode 100644 index 4c80327bff0..00000000000 --- a/doc/developer-guide/Development-Workflow.md +++ /dev/null @@ -1,457 +0,0 @@ -Development work flow of Gluster -================================ - -This document provides a detailed overview of the development model -followed by the GlusterFS project. - -For a simpler overview visit -[Simplified develoment workflow](./Simplified Development Workflow.md). - -Basics ------- - -The GlusterFS development model largely revolves around the features and -functionality provided by Git version control system, Gerrit code review -system and Jenkins continuous integration system. It is a primer for a -contributor to the project. - -### Git - -Git is a extremely flexible, distributed version control system. -GlusterFS' main git repository is at and public -mirrors are at GlusterForge -(https://forge.gluster.org/glusterfs-core/glusterfs) and at GitHub -(https://github.com/gluster/glusterfs). The development repo is hosted -inside Gerrit and every code merge is instantly replicated to the public -mirrors. - -A good introduction to Git can be found at -. - -### Gerrit - -Gerrit is an excellent code review system which is developed with a git -based workflow in mind. The GlusterFS project code review system is -hosted at [review.gluster.org](http://review.gluster.org). Gerrit works -on "Change"s. A change is a set of modifications to various files in -your repository to accomplish a task. It is essentially one large git -commit with all the necessary changes which can be both built and -tested. - -Gerrit usage is described later in 'Review Process' section. - -### Jenkins - -Jenkins is a Continuous Integration build system. Jenkins is hosted at -. Jenkins is configured to work with Gerrit by -setting up hooks. Every "Change" which is pushed to Gerrit is -automatically picked up by Jenkins, built and smoke tested. Output of -all builds and tests can be viewed at -. Jenkins is also setup with a -'regression' job which is designed to execute test scripts provided as -part of the code change. - -Preparatory Setup ------------------ - -Here is a list of initial one-time steps before you can start hacking on -code. - -### Register - -Sign up for an account at by clicking -'Register' on the right-hand top. You can use your gmail login as the -openID identity. - -### Preferred email - -On first login, add your git/work email to your identity. You will have -to click on the URL which is sent to your email and set up a proper Full -Name. Make sure you set your git/work email as your preferred email. -This should be the email address from which all your code commits are -associated. - -### Set Username - -Select yourself a username. - -### Watch glusterfs - -In Gerrit settings, watch the 'glusterfs' project. Tick on all the three -(New Changes, All Comments, Submitted Changes) types of notifications. - -### Email filters - -Set up a filter rule in your mail client to tag or classify mails with -the header - - List-Id:  - -as mails originating from the review system. - -### SSH keys - -Provide your SSH public key into Gerrit so that you can successfully -access the development git repo as well as push changes for -review/merge. - -### Clone a working tree - -Get yourself a working tree by cloning the development repository from -Gerrit - - sh$ git clone ssh://[username)@]git.gluster.org/glusterfs.git glusterfs - -Branching policy ----------------- - -This section describes both, the branching policies on the public repo -as well as the suggested best-practice for local branching - -### Master/release branches - -In glusterfs.git, the master branch is the forward development branch. -This is where new features come in first. In fact this is where almost -every change (commit) comes in first. The master branch is always kept -in a buildable state and smoke tests pass. - -Release trains (3.1.z, 3.2.z, 3.2.z) each have a branch originating from -master. Code freeze of each new release train is marked by the creation -of the release-3.y branch. At this point no new features are added to -the release-3.y branch. All fixes and commits first get into master. -From there, only bug fixes get backported to the relevant release -branches. From the release-3.y branch, actual release code snapshots -(e.g. glusterfs-3.2.2 etc.) are tagged (git annotated tag with 'git tag --a') shipped as a tarball. - -### Personal per-task branches - -As a best practice, it is recommended you perform all code changes for a -task in a local branch in your working tree. The local branch should be -created from the upstream branch to which you intend to submit the -change. If you are submitting changes to master branch, first create a -local task branch like this - - - sh$ git checkout master - sh$ git branch bug-XYZ && git checkout bug-XYZ - ...  - -If you are backporting a fix to a release branch, or making a new change -to a release branch, your commands would be slightly different. If you -are checking out a release branch in your local working tree for the -first time, make sure to set it up as a remote tracking branch like this -- - - sh$ git checkout -b release-3.2 origin/release-3.2 - -The above step is not necessary to be repeated. In the future if you -want to work to the release branch - - - sh$ git checkout release-3.2 - sh$ git branch bug-XYZ-release-3.2 && git checkout bug-XYZ-release-3.2 - ...  - -Building --------- - -### Environment Setup - -**For details about the required packages for the build environment -refer : [Building GlusterFS](./Building GlusterFS.md)** - -Ubuntu: - -To setup the build environment on an Ubuntu system, type the following -command to install the required packages: - - sudo apt-get -y install python-pyxattr libreadline-dev tar - python-pastedeploy python-simplejson python-sphinx python-webob libssl-dev - pkg-config python-dev python-eventlet python-netifaces libaio-dev libibverbs-dev - libtool libxml2-dev liblvm2-dev make autoconf automake bison dos2unix flex libfuse-dev - -CentOS/RHEL/Fedora: - -On Fedora systems, install the required packages by following the -instructions in [CompilingRPMS](./Compiling RPMS.md). - -### Creating build environment - -Once the required packages are installed for your appropiate system, -generate the build configuration: - - sh$ ./autogen.sh - sh$ ./configure --enable-fusermount - -### Build and install - -#### GlusterFS - -Ubuntu: - -Type the following to build and install GlusterFS on the system: - - sh$ make - sh$ make install - -CentOS/RHEL/Fedora: - -In an rpm based system, there are two methods to build GlusterFS. One is -to use the method describe above for *Ubuntu*. The other is to build and -install RPMS as described in [CompilingRPMS](./Compiling RPMS.md). - -#### GlusterFS UFO/SWIFT - -To build and run Gluster UFO you can do the following: - -1. Build, create, and install the RPMS as described in - [CompilingRPMS](./Compiling RPMS.md). -2. Configure UFO/SWIFT as described in [Howto Using UFO SWIFT - A quick - and dirty setup - guide](http://www.gluster.org/2012/09/howto-using-ufo-swift-a-quick-and-dirty-setup-guide) - -Commit policy -------------- - -For a Gerrit based work flow, each commit should be an independent, -buildable and testable change. Typically you would have a local branch -per task, and most of the times that branch will have one commit. - -If you have a second task at hand which depends on the changes of the -first one, then technically you can have it as a separate commit on top -of the first commit. But it is important that the first commit should be -a testable change by itself (if not, it is an indication that the two -commits are essentially part of a single change). Gerrit accommodates -these situations by marking Change 1 as a "dependency" of Change 2 -(there is a 'Dependencies' tab in the Change page in Gerrit) -automatically when you push the changes for review from the same local -branch. - -You will need to sign-off your commit (git commit -s) before sending the -patch for review. By signing off your patch, you agree to the terms -listed under "Developer's Certificate of Origin" section in the -CONTRIBUTING file available in the repository root. - -Provide a meaningful commit message. Your commit message should be in -the following format - -- A short one line subject describing what the patch accomplishes -- An empty line following the subject -- Situation necessitating the patch -- Description of the code changes -- Reason for doing it this way (compared to others) -- Description of test cases - -### Test cases - -Part of the workflow is to aggregate and execute pre-commit test cases -which accompany patches, cumulatively for every new patch. This -guarantees that tests which are working till the present are not broken -with the new patch. Every change submitted to Gerrit much include test -cases in - - tests/group/script.t - -as part of the patch. This is so that code changes and accompanying test -cases are reviewed together. All new commits now come under the -following categories w.r.t test cases: - -#### New 'group' directory and/or 'script.t' - -This is typically when code is adding a new module and/or feature - -#### Extend/Modify old test cases in existing scripts - -This is typically when present behavior (default values etc.) of code is -changed - -#### No test cases - -This is typically when code change is trivial (e.g. fixing typos in -output strings, code comments) - -#### Only test case and no code change - -This is typically when we are adding test cases to old code (already -existing before this regression test policy was enforced) - -More details on how to work with test case scripts can be found in - -tests/README - -Review process --------------- - -### rfc.sh - -After doing the local commit, it is time to submit the code for review. -There is a script available inside glusterfs.git called rfc.sh. You can -submit your changes for review by simply executing - - sh$ ./rfc.sh - -This script does the following: - -- The first time it is executed, it downloads a git hook from - and sets it up - locally to generate a Change-Id: tag in your commit message (if it - was not already generated.) -- Rebase your commit against the latest upstream HEAD. This rebase - also causes your commits to undergo massaging from the just - downloaded commit-msg hook. -- Prompt for a Bug Id for each commit (if it was not already provded) - and include it as a "BUG:" tag in the commit log. You can just hit - at this prompt if your submission is purely for review - purposes. -- Push the changes to review.gluster.org for review. If you had - provided a bug id, it assigns the topic of the change as "bug-XYZ". - If not it sets the topic as "rfc". - -On a successful push, you will see a URL pointing to the change in -review.gluster.org - -Auto verification ------------------ - -The integration between Jenkins and Gerrit triggers an event in Jenkins -on every push of changes, to pick up the change and run build and smoke -test on it. - -If the build and smoke tests execute successfuly, Jenkins marks the -change as '+0 Verified'. If they fail, '-1 Verified' is marked on the -change. This means passing the automated smoke test is a necessary -condition but not sufficient. - -It is important to note that Jenkins verification is only a generic -verification of high level tests. More concentrated testing effort for -the patch is necessary with manual verification. - -If auto verification fails, it is a good reason to skip code review till -a fixed change is pushed later. You can click on the build URL -automatically put as a comment to inspect the reason for auto -verification failure. In the Jenkins job page, you can click on the -'Console Output' link to see the exact point of failure. - -Reviewing / Commenting ----------------------- - -Code review with Gerrit is relatively easy compared to other available -tools. Each change is presented as multiple files and each file can be -reviewed in Side-by-Side mode. While reviewing it is possible to comment -on each line by double-clicking on it and writing in your comments in -the text box. Such in-line comments are saved as drafts, till you -finally publish them as a Review from the 'Change page'. - -There are many small and handy features in Gerrit, like 'starring' -changes you are interested to follow, setting the amount of context to -view in the side-by-side view page etc. - -Incorporate, Amend, rfc.sh, Reverify ------------------------------------- - -Code review comments are notified via email. After incorporating the -changes in code, you can mark each of the inline comment as 'done' -(optional). After all the changes to your local files, amend the -previous commit with these changes with - - - sh$ git commit -a --amend - -Push the amended commit by executing rfc.sh. If your previous push was -an "rfc" push (i.e, without a Bug Id) you will be prompted for a Bug Id -again. You can re-push an rfc change without any other code change too -by giving a Bug Id. - -On the new push, Jenkins will re-verify the new change (independent of -what the verification result was for the previous push). - -It is the Change-Id line in the commit log (which does not change) that -associates the new push as an update for the old push (even though they -had different commit ids) under the same Change. In the side-by-side -view page, it is possible to set knobs in the 'Patch History' tab to -view changes between patches as well. This is handy to inspect how -review comments were incorporated. - -If further changes are found necessary, comments can be made on the new -patch as well, and the same cycle repeats. - -If no further changes are necessary, the reviewer can mark the patch as -reviewed with a certain score depending on the depth of review and -confidence (+1 or +2). A -1 review indicates non-agreement for the -change to get merged upstream. - -Regression tests and test cases -------------------------------- - -All code changes which are not trivial (typo fixes, code comment -changes) must be accompanied with either a new test case script or -extend/modify an existing test case script. It is important to review -the test case in conjunction with the code change to analyse whether the -code change is actually verified by the test case. - -Regression tests (i.e, execution of all test cases accumulated with -every commit) is not automatically triggered as the test cases can be -extensive and is quite expensive to execute for every change submission -in the review/resubmit cycle. Instead it is triggered by the -maintainers, after code review. Passing the regression test is a -necessary condition for merge along with code review points. - -Submission Qualifiers ---------------------- - -For a change to get merged, there are two qualifiers which are enforced -by the Gerrit system. They are - A change should have at least one '+2 -Reviewed', and a change should have at least one '+1 Verified' -(regression test). The project maintainer will merge the changes once a -patch meets these qualifiers. - -Submission Disqualifiers ------------------------- - -There are three types of "negative votes". - --1 Verified - --1 Code-Review ("I would prefer that you didn't submit this") - --2 Code-Review ("Do not submit") - -The implication and scope of each of the three are different. They -behave differently as changes are resubmitted as new patchsets. - -### -1 Verified - -Anybody voting -1 Verified will prevent \*that patchset only\* from -getting merged. The flag is automatically cleared on the next patchset -post. The intention is that this vote is based on the result of some -kind of testing. A voter is expected to explain the test case which -failed. Jenkins jobs (smoke, regression, ufounit) use this field for -voting -1/0/+1. When voting -1, Jenkins posts the link to the URL which -has the console output of the failed job. - -### -1 Code-Review ("I would prefer that you didn't submit this") - -This is an advisory vote based on the content of the patch. Typically -issues in source code (both design and implementation), source code -comments, log messages, license headers etc. found by human inspection. -The reviewer explains the specific issues by commenting against the most -relevant lines of source code in the patch. On a resubmission, -1 votes -are cleared automatically. It is the responsibility of the maintainers -to honor -1 Code-Review votes from reviewers (by not merging the -patches), and inspecting that -1 comments on previous submissions are -addressed in the new patchset. Generally this is the recommended -"negative" vote. - -### -2 Code-Review ("Do not submit") - -This is a stronger vote which actually prevents Gerrit from merging the -patch. The -2 vote persists even after resubmission and continues to -prevent the patch from getting merged, until the voter revokes the -2 -vote (and then is further subjected to Submission Qualifiers). Typically -one would vote -2 if they are \*against the goal\* of what the patch is -trying to achieve (and not an issue with the patch, which can change on -resubmission). A reviewer would also vote -2 on a patch even if there is -agreement with the goal, but the issue in the code is of such a critical -nature that the reviewer personally wants to inspect the next patchset -and only then revoke the vote after finding the new patch satisfactory. -This prevents the merge of the patch in the mean time. Every registered -user has the right to exercise the -2 Code review vote, and cannot be -overridden by the maintainers. diff --git a/doc/developer-guide/Easy-Fix-Bugs.md b/doc/developer-guide/Easy-Fix-Bugs.md deleted file mode 100644 index 9ba36213a73..00000000000 --- a/doc/developer-guide/Easy-Fix-Bugs.md +++ /dev/null @@ -1,35 +0,0 @@ -Fixing easy bugs is an excellent method to start contributing patches to -Gluster. - -- Bugs which are marked with EasyFix flag can be found from below - BugZilla query. - - [Bugzilla Query For EasyFix - Bugs](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&keywords=EasyFix&list_id=2626252&product=GlusterFS) - - [RSS-feed for EasyFix Gluster Bugs](http://goo.gl/OpQwlv) -- To fix EasyFix bugs, - - When you pick an EasyFix you want to work on, assign it to - yourself and move it to ASSIGNED - - Check - [Bug report life cycle](./Bug report Life Cycle.md) and - follow it. - - Check Developers page for details about development workflow, - GlusterFS design documents etc. - -Sometimes an *Easy Fix* bug has a patch attached. In those cases, -the *Patch* keyword has been added to the bug. These bugs can be -used by new contributors that would like to verify their workflow. [Bug -1099645](https://bugzilla.redhat.com/1099645) is one example of those. - -### Guidelines for new comers - -- While trying to write a patch, do not hesitate to ask questions. -- If something in the documentation is unclear, we do need to know so - that we can improve it. -- There are no stupid questions, and it's more stupid to not ask - questions that others can easily answer. Always assume that if you - have a question, someone else would like to hear the answer too. - -[Reach out](http://gluster.org/community/index.html) to the developers -in \#gluster or \#gluster-dev on Freenode IRC, or on one of the mailing -lists, try to keep the discussions public so that anyone can learn from -it. diff --git a/doc/developer-guide/Fixing-issues-reported-by-tools-for-static-code-analysis.md b/doc/developer-guide/Fixing-issues-reported-by-tools-for-static-code-analysis.md deleted file mode 100644 index 5a3dceb7d0e..00000000000 --- a/doc/developer-guide/Fixing-issues-reported-by-tools-for-static-code-analysis.md +++ /dev/null @@ -1,66 +0,0 @@ -Static Code Analysis Tools --------------------------- - -Bug fixes for issues reported by *Static Code Analysis Tools* should -follow [Development Work Flow](./Development Workflow.md) - -### Coverity - -GlusterFS is part of [Coverity's](https://scan.coverity.com/) scan -program. - -- To see Coverity issues you have to be a member of the GlusterFS - project in Coverity scan website. -- Here is the link to [Coverity scan - website](https://scan.coverity.com/projects/987) -- Go to above link and subscribe to GlusterFS project (as - contributor). It will send a request to Admin for including you in - the Project. -- Once admins for the GlusterFS Coverity scan approve your request, - you will be able to see the defects raised by Coverity. -- [BZ 789278](https://bugzilla.redhat.com/show_bug.cgi?id=789278) - should be used as a umbrella bug for Coverity issues in master - branch unless you are trying to fix a specific bug in Bugzilla. - - While sending patches for fixing Coverity issues please use the - same bug number. - - For 3.6 branch the Coverity tracking bug is - [1122834](https://bugzilla.redhat.com/show_bug.cgi?id=1122834) -- When you decide to work on some issue, please assign it to your name - in the same Coverity website. So that we don't step on each others - work. -- When marking a bug intentional in Coverity scan website, please put - an explanation for the same. So that it will help others to - understand the reasoning behind it. - -*If you have more questions please send it to -[gluster-devel](http://www.gluster.org/interact/mailinglists) mailing -list* - -### CPP Check - -Cppcheck is available in Fedora and EL's EPEL repo - -- Install Cppcheck - - yum install cppcheck - -- Clone GlusterFS code - - git clone https://github.com/gluster/glusterfs) glusterfs - -- Run Cpp check - - cppcheck glusterfs/ 2>cppcheck.log - -- [BZ 1091677](https://bugzilla.redhat.com/show_bug.cgi?id=1091677) - should be used for submitting patches to master branch for Cppcheck - reported issues. - -### Daily Runs - -We now have daily runs of various static source code analysis tools on -the glusterfs sources. There are daily analyses of the master, -release-3.6, and release-3.5 branches. - -Results are posted at - diff --git a/doc/developer-guide/GlusterFS-Release-process.md b/doc/developer-guide/GlusterFS-Release-process.md deleted file mode 100644 index 504b012def7..00000000000 --- a/doc/developer-guide/GlusterFS-Release-process.md +++ /dev/null @@ -1,73 +0,0 @@ -Release Process for GlusterFS -============================= - -Create tarball --------------- - -1. Add the release-notes to the docs/release-notes/ directory in the - sources -2. after merging the release-notes, create a tag like v3.6.2 -3. push the tag to git.gluster.org -4. create the tarball with the [release job in - Jenkins](http://build.gluster.org/job/release/) - -Notify packagers ----------------- - -Notify the packagers that we need packages created. Provide the link to the -source tarball from the Jenkins release job to the [packagers -mailinglist](mailto:packaging@gluster.org). A list of the people involved in -the package maintenance for the different distributions is in the `MAINTAINERS` -file in the sources. - -Create a new Tracker Bug for the next release ---------------------------------------------- - -The tracker bugs are used as guidance for blocker bugs and should get created when a release is made. To create one - -- file a [new bug in Bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=GlusterFS) -- base the contents on previous tracker bugs, like the one for [glusterfs-3.5.5](https://bugzilla.redhat.com/show_bug.cgi?id=glusterfs-3.5.5) -- set the '''Alias''' (it is a text-field) of the bug to 'glusterfs-a.b.c' where a.b.c is the next minor version -- save the new bug -- you should now be able to use the 'glusterfs-a.b.c' to access the bug, use the alias to replace the BZ# in URLs, or '''blocks''' fields -- bugs that were not fixed in this release, but were added to the tracker should be moved to the new tracker - - -Create Release Announcement ---------------------------- - -Create the Release Announcement (this is often done while people are -making the packages). The contents of the release announcement can be -based on the release notes, or should at least have a pointer to them. - -Examples: - -- [blog](http://blog.gluster.org/2014/11/glusterfs-3-5-3beta2-is-now-available-for-testing/) -- [release - notes](https://github.com/gluster/glusterfs/blob/v3.5.3/doc/release-notes/3.5.3.md) - -Send Release Announcement -------------------------- - -Once the Fedora/EL RPMs are ready (and any others that are ready by -then), send the release announcement: - -- Gluster Mailing lists - - gluster-announce, gluster-devel, gluster-users -- Gluster Blog -- Gluster Twitter account -- Gluster Facebook page -- Gluster LinkedIn group - Justin has access -- Gluster G+ - -Close Bugs ----------- - -Close the bugs that have all their patches included in the release. -Leave a note in the bug report with a pointer to the release -announcement. - -Other things to consider ------------------------- - -- Translations? - Are there strings needing translation? diff --git a/doc/developer-guide/Guidelines-For-Maintainers.md b/doc/developer-guide/Guidelines-For-Maintainers.md deleted file mode 100644 index 71612cfe8c7..00000000000 --- a/doc/developer-guide/Guidelines-For-Maintainers.md +++ /dev/null @@ -1,70 +0,0 @@ -### Guidelines For Maintainers - -GlusterFS has maintainers, sub-maintainers and release maintainers to -manage the project's codebase. Sub-maintainers are the owners for -specific areas/components of the source tree. Maintainers operate across -all components in the source tree.Release maintainers are the owners for -various release branches (release-x.y) present in the GlusterFS -repository. - -In the guidelines below, release maintainers and sub-maintainers are -also implied when there is a reference to maintainers unless it is -explicitly called out. - -### Guidelines that Maintainers are expected to adhere to - -​1. Ensure qualitative and timely management of patches sent for review. - -​2. For merging patches into the repository, it is expected of -maintainers to: - - a> Merge patches of owned components only. - b> Seek approvals from all maintainers before merging a patchset spanning multiple components. - c> Ensure that regression tests pass for all patches before merging. - d> Ensure that regression tests accompany all patch submissions. - e> Ensure that documentation is updated for a noticeable change in user perceivable behavior or design. - f> Encourage code unit tests from patch submitters to improve the overall quality of the codebase. - g> Not merge patches written by themselves until there is a +2 Code Review vote by other reviewers. - -​3. The responsibility of merging a patch into a release branch in -normal circumstances will be that of the release maintainer's. Only in -exceptional situations, maintainers & sub-maintainers will merge patches -into a release branch. - -​4. Release maintainers will ensure approval from appropriate -maintainers before merging a patch into a release branch. - -​5. Maintainers have a responsibility to the community, it is expected -of maintainers to: - - a> Facilitate the community in all aspects. - b> Be very active and visible in the community. - c> Be objective and consider the larger interests of the community  ahead of individual interests. - d> Be receptive to user feedback. - e> Address concerns & issues affecting users. - f> Lead by example. - -### Queries on Guidelines - -Any questions or comments regarding these guidelines can be routed to -gluster-devel at gluster dot org. - -### Patches in Gerrit - -Gerrit can be used to list patches that need reviews and/or can get -merged. Some queries have been prepared for this, edit the search box in -Gerrit to make your own variation: - -- [3.5 open reviewed/verified (non - rfc)](http://review.gluster.org/#/q/project:glusterfs+branch:release-3.5+status:open+%28label:Code-Review%253D%252B1+OR+label:Code-Review%253D%252B2+OR+label:Verified%253D%252B1%29+NOT+topic:rfc+NOT+label:Code-Review%253D-2,n,z) -- [All open 3.5 patches (non - rfc)](http://review.gluster.org/#/q/project:glusterfs+branch:release-3.5+status:open+NOT+topic:rfc,n,z) -- [Open NFS (master - branch)](http://review.gluster.org/#/q/project:glusterfs+branch:master+status:open+message:nfs,n,z) - -An other option can be used in combination with the Gerrit queries, and -has support for filename/directory matching (the queries above do not). -Go to the [settings](http://review.gluster.org/#/settings/projects) in -your Gerrit profile, and enter filters like these: - -![gerrit-watched-projects](https://cloud.githubusercontent.com/assets/10970993/7411584/1a26614a-ef57-11e4-99ed-ee96af22a9a1.png) diff --git a/doc/developer-guide/Jenkins-Infrastructure.md b/doc/developer-guide/Jenkins-Infrastructure.md deleted file mode 100644 index cb5d63ecfb7..00000000000 --- a/doc/developer-guide/Jenkins-Infrastructure.md +++ /dev/null @@ -1,127 +0,0 @@ -We're using Gerrit and [Jenkins](http://jenkins-ci.org) at the moment. -Our Gerrit instance: - -http://review.gluster.org - -It's hosted on an ancient VM (badly needs upgrading) in some hosting -place called iWeb. We're wanting to migrate this to a Rackspace VM in -the very near future. - -Our main Jenkins instance: - -http://build.gluster.org - -That's also a pretty-out-of-date version of Jenkins, on an badly -outdated VM. That one's in Rackspace at least. We intend on migrating to -a new VM (and new Jenkins) in the not-too-far-future. No ETA yet. ;) - -As well as those two main pieces, we have a bunch of VM's in Rackspace -with various OS's on them: - -http://build.gluster.org/computer/ - -In that list we have: - -- bulk\*.cloud.gluster.org\ - - - Temporary VM's used for running bulk regression tests on, for - analysing our spurious regression failure problem - - Setup and maintained by Justin Clift - -- freebsd0.cloud.gluster.org\ - - - FreeBSD 10.0 VM in Rackspace. Used for automatic smoke testing - on FreeBSD of all proposed patches (uses a Gerrit trigger). - -- g4s-rackspace-\* (apart from gfs-rackspace-f20-1), and - tiny-rackspace-f20-1\ - - - Various VM's in Rackspace with Fedora and EL6 on them, setup by - Luis Pabon. From their description in Jenkins, they're nodes for - "open-stack swift executing functional test suite against - Gluster-for-Swift". - -- gfs-rackspace-f20-1\ - - - A VM in Rackspace for automatically building RPMs on. Setup + - maintained by Luis Pabon. - -- netbsd0.cloud.gluster.org\ - - - NetBSD 6.1.4 VM in Rackspace. Used for automatic smoke testing - on NetBSD 6.x of all proposed patches (uses a Gerrit trigger). - - Setup and maintained by Manu Dreyfus - -- netbsd7.cloud.gluster.org\ - - - NetBSD 7 (beta) VM in Rackspace. Used for automatic smoke - testing on NetBSD 7 of all proposed patches (uses a Gerrit - trigger). - - Setup and maintained by Manu Dreyfus - -- nbslave7\*.cloud.gluster.org\ - - - NetBSD 7 slaves VMs for running our regression tests on - - Setup and maintained by Manu Dreyfus - -- slave20.cloud.gluster.org - slave49.cloud.gluster.org\ - - - CentOS 6.5 VM's in Rackspace. Used for automatic regression - testing of all proposed patches (uses a Gerrit trigger). - - Setup and maintained by Michael Scherer - -Work is being done on the GlusterFS regression tests so they'll function -on FreeBSD and NetBSD (instead of just Linux). When that's complete, -we'll automatically run full regression testing on FreeBSD and NetBSD -for all proposed patches too. - -Non Jenkins VMs ---------------- - -**backups.cloud.gluster.org** - - Server holding our nightly backups. Setup and maintained by Michael - Scherer. - -**bareos-dev.cloud.gluster.org, bareos-data.cloud.gluster.org** - - Shared VMs to debug Bareos and libgfapi integration. Maintained by - Niels de Vos. - -**bugs.cloud.gluster.org** - - Hosting - [gluster-bugs-webui](https://github.com/gluster/gluster-bugs-webui) - for bug triage/checking. Maintained by Niels de Vos. - -**docs.cloud.gluster.org** - - Documentation server, running readTheDocs - managed by Soumya Deb. - -**download.gluster.org** - - Our primary download server - holds the Gluster binaries we - generate, which people can download. - -**gluster-sonar** - - Hosts our Gluster - [SonarQube](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem) - instance. Setup and maintained by Louis Zuckerman. - -**salt-master.gluster.org** - - Our Configuration Mgmt master VM. Maintained by Michael Scherer. - -**munin.gluster.org** - - Munin master. Maintained by Michael Scherer. - -**webbuilder.gluster.org** - - Our builder for the website. Maintained by Michael Scherer. - -**www.gluster.org aka supercolony.gluster.org** - - The main website server. Maintained by Michael Scherer, Justin - Clift, Others ( add your name ) diff --git a/doc/developer-guide/Jenkins-Manual-Setup.md b/doc/developer-guide/Jenkins-Manual-Setup.md deleted file mode 100644 index 3622c7265a0..00000000000 --- a/doc/developer-guide/Jenkins-Manual-Setup.md +++ /dev/null @@ -1,146 +0,0 @@ -Setting up Jenkins slaves on Rackspace for GlusterFS regression testing -======================================================================= - -This is for RHEL/CentOS 6.x. The below commands should be run as root. - -### Install additional required packages - - yum -y install cmockery2-devel dbench libacl-devel mock nfs-utils yajl perl-Test-Harness salt-minion - -### Enable yum-cron for automatic rpm updates - - chkconfig yum-cron on - -### Add the mock user - - useradd -g mock mock - -### Disable eth1 - -Because GlusterFS can fail if more than 1 ethernet interface - - sed -i 's/ONBOOT=yes/ONBOOT=no/' /etc/sysconfig/network-scripts/ifcfg-eth1 - -### Disable IPv6 - -As per - - sed -i 's/IPV6INIT=yes/IPV6INIT=no/' /etc/sysconfig/network-scripts/ifcfg-eth0 - echo 'options ipv6 disable=1' > /etc/modprobe.d/ipv6.conf - chkconfig ip6tables off - sed -i 's/NETWORKING_IPV6=yes/NETWORKING_IPV6=no/' /etc/sysconfig/network - echo ' ' >> /etc/sysctl.conf - echo '# ipv6 support in the kernel, set to 0 by default' >> /etc/sysctl.conf - echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf - echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf - sed -i 's/v     inet6/-     inet6/' /etc/netconfig - -### Update hostname - - vi /etc/sysconfig/network - vi /etc/hosts - -### Remove IPv6 and eth1 interface from /etc/hosts - - sed -i 's/^10\./#10\./' /etc/hosts - sed -i 's/^2001/#2001/' /etc/hosts - -### Install ntp - - yum -y install ntp - chkconfig ntpdate on - service ntpdate start - -### Install OpenJDK, needed for Jenkins slaves - - yum -y install java-1.7.0-openjdk - -### Create the Jenkins user - - useradd -G wheel jenkins - chmod 755 /home/jenkins - -### Set the Jenkins password - - passwd jenkins - -### Copy the Jenkins SSH key from build.gluster.org - - mkdir /home/jenkins/.ssh - chmod 700 /home/jenkins/.ssh - cp `` /home/jenkins/.ssh/id_rsa - chown -R jenkins:jenkins /home/jenkins/.ssh - chmod 600 /home/jenkins/.ssh/id_rsa - -### Generate the SSH known hosts file for jenkins user - - su - jenkins - mkdir ~/foo - cd ~/foo - git clone `[`ssh://build@review.gluster.org/glusterfs.git`](ssh://build@review.gluster.org/glusterfs.git) - (this will ask if the new host fingerprint should be added.  Choose yes) - cd .. - rm -rf ~/foo -  exit - -### Install git from RPMForge - - yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm - yum -y --enablerepo=rpmforge-extras update git - -### Install the GlusterFS patch acceptance tests - - git clone git://forge.gluster.org/gluster-patch-acceptance-tests/gluster-patch-acceptance-tests.git /opt/qa - -### Add the loopback mount point to /etc/fstab - -For the 1GB Rackspace VM's use this: - - echo '/backingstore           /d                      xfs     loop            0 2' >> /etc/fstab - mount /d - -For the 2GB and above Rackspace VM's use this: - - echo '/dev/xvde   /d   xfs   defaults   0 2' >> /etc/fstab - mount /d - -### Create the directories needed for the regression testing - - JDIRS="/var/log/glusterfs /var/lib/glusterd /var/run/gluster /d /d/archived_builds /d/backends /d/build /d/logs /home/jenkins/root" - mkdir -p $JDIRS - chown jenkins:jenkins $JDIRS - chmod 755 $JDIRS - ln -s /d/build /build - -### Create the directories where regression logs are archived - - ADIRS="/archives/archived_builds /archives/logs" - mkdir -p $ADIRS - chown jenkins:jenkins $ADIRS - chmod 755 $ADIRS - -### Install Nginx - -For making logs available over http - - yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm - yum -y install nginx - lokkit -s http - -### Copy the Nginx config file into place - - cp -f /opt/qa/nginx/default.conf /etc/nginx/conf.d/default.conf - -### Enable wheel group for sudo - - sed -i 's/# %wheel\tALL=(ALL)\tNOPASSWD/%wheel\tALL=(ALL)\tNOPASSWD/' /etc/sudoers - -### Reboot (for networking changes to take effect) - - reboot - -### Add forward and reverse DNS entries for the slave into Rackspace DNS - -Rackspace recently added [API calls for its Cloud -DNS](https://developer.rackspace.com/docs/cloud-dns/getting-started/?lang=python) -service, so we should be able to fully automate this part as well now. \ No newline at end of file diff --git a/doc/developer-guide/Projects.md b/doc/developer-guide/Projects.md deleted file mode 100644 index 5c41fef9daf..00000000000 --- a/doc/developer-guide/Projects.md +++ /dev/null @@ -1,99 +0,0 @@ -This page contains a list of project ideas which will be suitable for -students (for GSOC, internship etc.) - -Projects with mentors ---------------------- - -### gfsck - A GlusterFS filesystem check - -- A tool to check filesystem integrity and repairing -- I'm currently working on it -- Owner: Xavier Hernandez (Datalab) - -### Sub-directory mount support for native GlusterFS mounts - -Allow clients to directly mount directories inside a GlusterFS volume, -like how NFS clients can mount directories inside an NFS export. - -Mentor: Kaushal - -### GlusterD services high availablity - -GlusterD should restart the processes it manages, bricks, nfs server, -self-heal daemon and quota daemon, whenever it detects they have died. - -Mentor : Atin Mukherjee - -### Language bindings for libgfapi - -- API/library for accessing gluster volumes - -### oVirt gui for stats - -Have pretty graphs and tables in ovirt for the GlusterFS top and profile -commands. - -### Monitoring integrations - munin others - -The more monitoring support we have for GlusterFS the better. - -### More compression algorithms for compression xlator - -The on-wire compression translator should be extended to support more -compression algorithms. Ideally it should be pluggable. - -### Cinder GlusterFS backup driver - -Write a driver for cinder, a part of openstack, to allow backup onto -GlusterFS volumes - -### rsockets - sockets for rdma transport - -Coding for RDMA using the familiar socket api should lead to a more -robust rdma transport - -### Data import tool - -Create a tool which will allow importing already existing data in the -brick directories into the gluster volume. This is most likely going to -be a special rebalance process. - -### Rebalance improvements - -Improve rebalance performance. - -### Meta translator - -The meta xlator provides a /proc like interface to GlusterFS xlators. -This could be improved upon and the meta xlator could be made a standard -part of the volume graph. - -### Geo-replication using rest-api - -Might be suitable for geo replication over WAN. - -### Quota using underlying FS' quota - -GlusterFS quota is currently maintained completely in GlusterFSs -namespace using xattrs. We could make use of the quota capabilities of -the underlying fs (XFS) for better performance. - -### Snapshot pluggability - -Snapshot should be able to make use of snapshot support provided by -btrfs for example. - -### Compression at rest - -Lessons learnt while implementing encryption at rest can be used with -the compression at rest. - -### File-level deduplication - -GlusterFS works on files. So why not have dedup at the level files as -well. - -### Composition xlator for small files - -Merge small files into a designated large file using our own custom -semantics. This can improve our small file performance. \ No newline at end of file diff --git a/doc/developer-guide/Simplified-Development-Workflow.md b/doc/developer-guide/Simplified-Development-Workflow.md deleted file mode 100644 index c95e3ba4f67..00000000000 --- a/doc/developer-guide/Simplified-Development-Workflow.md +++ /dev/null @@ -1,238 +0,0 @@ -Simplified development workflow for GlusterFS -============================================= - -This page gives a simplified model of the development workflow used by -the GlusterFS project. This will give the steps required to get a patch -accepted into the GlusterFS source. - -Visit [Development Work Flow](./Development Workflow.md) a more -detailed description of the workflow. - -Initial preperation -------------------- - -The GlusterFS development workflow revolves around -[Git](http://git.gluster.org/?p=glusterfs.git;a=summary), -[Gerrit](http://review.gluster.org) and -[Jenkins](http://build.gluster.org). - -Using these tools requires some initial preparation. - -### Dev system setup - -You should install and setup Git on your development system. Use your -distribution specific package manger to install git. After installation -configure git. At the minimum, set a git user email. To set the email -do, - - $ git config --global user.name "Name" - $ git config --global user.email  - -You should also generate an ssh key pair if you haven't already done it. -To generate a key pair do, - - $ ssh-keygen - -and follow the instructions. - -Next, install the build requirements for GlusterFS. Refer -[Building GlusterFS - Build Requirements](./Building GlusterFS.md#Build Requirements) -for the actual requirements. - -### Gerrit setup - -To contribute to GlusterFS, you should first register on -[gerrit](http://review.gluster.org). - -After registration, you will need to select a username, set a preferred -email and upload the ssh public key in gerrit. You can do this from the -gerrit settings page. Make sure that you set the preferred email to the -email you configured for git. - -### Get the source - -Git clone the GlusterFS source using - - @review.gluster.org/glusterfs.git - -(replace with your gerrit username). - - $ git clone (ssh://) @review.gluster.org/glusterfs.git - -This will clone the GlusterFS source into a subdirectory named glusterfs -with the master branch checked out. - -It is essential that you use this link to clone, or else you will not be -able to submit patches to gerrit for review. - -Actual development ------------------- - -The commands in this section are to be run inside the glusterfs source -directory. - -### Create a development branch - -It is recommended to use separate local development branches for each -change you want to contribute to GlusterFS. To create a development -branch, first checkout the upstream branch you want to work on and -update it. More details on the upstream branching model for GlusterFS -can be found at - -[Development Work Flow - Branching\_policy](./Development Workflow.md#branching-policy). -For example if you want to develop on the master branch, - - $ git checkout master - $ git pull - -Now, create a new branch from master and switch to the new branch. It is -recommended to have descriptive branch names. Do, - - $ git branch  - $ git checkout  - -or, - - $ git checkout -b  - -to do both in one command. - -### Hack - -Once you've switched to the development branch, you can perform the -actual code changes. [Build](./Building GlusterFS) and test to -see if your changes work. - -#### Tests - -Unless your changes are very minor and trivial, you should also add a -test for your change. Tests are used to ensure that the changes you did -are not broken inadvertently. More details on tests can be found at - -[Development Workflow - Test cases](./Development Workflow.md#test-cases) -and -[Development Workflow - Regression tests and test cases](./Development Workflow.md#regression-tests-and-test-cases) - -### Regression test - -Once your change is working, run the regression test suite to make sure -you haven't broken anything. The regression test suite requires a -working GlusterFS installation and needs to be run as root. To run the -regression test suite, do - - # make install - # ./run-tests.sh - -### Commit your changes - -If you haven't broken anything, you can now commit your changes. First -identify the files that you modified/added/deleted using git-status and -stage these files. - - $ git status - $ git add  - -Now, commit these changes using - - $ git commit -s - -Provide a meaningful commit message. The commit message policy is -described at - -[Development Work Flow - Commit policy](./Development Workflow.md#commit-policy). - -It is essential that you commit with the '-s' option, which will -sign-off the commit with your configured email, as gerrit is configured -to reject patches which are not signed-off. - -### Submit for review - -To submit your change for review, run the rfc.sh script, - - $ ./rfc.sh - -The script will ask you to enter a bugzilla bug id. Every change -submitted to GlusterFS needs a bugzilla entry to be accepted. If you do -not already have a bug id, file a new bug at [Red Hat -Bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=GlusterFS). -If the patch is submitted for review, the rfc.sh script will return the -gerrit url for the review request. - -More details on the rfc.sh script are available at -[Development Work Flow - rfc.sh](./Development Workflow.md#rfc.sh). - -Review process --------------- - -Your change will now be reviewed by the GlusterFS maintainers and -component owners on [gerrit](http://review.gluster.org). You can follow -and take part in the review process on the change at the review url. The -review process involves several steps. - -To know component owners , you can check the "MAINTAINERS" file in root -of glusterfs code directory - -### Automated verification - -Every change submitted to gerrit triggers an initial automated -verification on [jenkins](http://build.gluster.org). The automated -verification ensures that your change doesn't break the build and has an -associated bug-id. - -More details can be found at - -[Development Work Flow - Auto verification](./Development Workflow.md#auto-verification). - -### Formal review - -Once the auto verification is successful, the component owners will -perform a formal review. If they are okay with your change, they will -give a positive review. If not they will give a negative review and add -comments on the reasons. - -More information regarding the review qualifiers and disqualifiers is -available at - -[Development Work Flow - Submission Qualifiers](./Development Workflow.md#submission-qualifiers) -and -[Development Work Flow - Submission Disqualifiers](./Development Workflow.md#submission-disqualifiers). - -If your change gets a negative review, you will need to address the -comments and resubmit your change. - -#### Resubmission - -Switch to your development branch and make new changes to address the -review comments. Build and test to see if the new changes are working. - -Stage your changes and commit your new changes using, - - $ git commit --amend - -'--amend' is required to ensure that you update your original commit and -not create a new commit. - -Now you can resubmit the updated commit for review using the rfc.sh -script. - -The formal review process could take a long time. To increase chances -for a speedy review, you can add the component owners as reviewers on -the gerrit review page. This will ensure they notice the change. The -list of component owners can be found in the MAINTAINERS file present in -the GlusterFS source - -### Verification - -After a component owner has given a positive review, a maintainer will -run the regression test suite on your change to verify that your change -works and hasn't broken anything. This verification is done with the -help of jenkins. - -If the verification fails, you will need to make necessary changes and -resubmit an updated commit for review. - -### Acceptance - -After successful verification, a maintainer will merge/cherry-pick (as -necessary) your change into the upstream GlusterFS source. Your change -will now be available in the upstream git repo for everyone to use. \ No newline at end of file -- cgit